I'm mapping a set of membership classes for my application using
Fluent NHibernate.  I'm mapping the classes to the asp.net membership
database structure.  The database schema relevant to the problem looks
like this:

    ASPNET_USERS
    UserId        PK
    ApplicationId FK NOT NULL
    other user columns ...

    ASPNET_MEMBERSHIP
    UserId        PK,FK
    ApplicationID FK NOT NULL
    other membership columns...

There is a one to one relationship between these two tables.  I'm
attempting to join the two tables together and map data from both
tables to a single 'User' entity which looks like this:

    public class User
    {
        public virtual Guid Id { get; set; }
        public virtual Guid ApplicationId { get; set; }

        // other properties to be mapped from aspnetuser/membership
tables ...

My mapping file is as follows:

    public class UserMap : ClassMap<User>
    {
        public UserMap()
        {
            Table("aspnet_Users");
            Id(user =>
user.Id).Column("UserId").GeneratedBy.GuidComb();
            Map(user => user.ApplicationId);
            // other user mappings

            Join("aspnet_Membership", join => {
                join.KeyColumn("UserId");
                join.Map(user => user.ApplicationId);
                // Map other things from membership to 'User' class
            }
        }
    }

If I try to run with the code above I get a FluentConfiguration
exception
> Tried to add property 'ApplicationId' when already added.

If I remove the line *"Map(user => user.ApplicationId);"* or change it
to *"Map(user => user.ApplicationId)**.Not.Update().Not.Insert();**"*
then the application runs but I get the following exception when
trying to insert a new user:
> Cannot insert the value NULL into column 'ApplicationId', table 
> 'ASPNETUsers_Dev.dbo.aspnet_Users'; column does not allow nulls. INSERT fails.
The statement has been terminated.

And if I leave the *.Map(user => user.ApplicationId)* as it originally
was and  make either of those changes to the ***join**.Map(user =>
user.ApplicationId)* then I get the same exception above except of
course the exception is related to an insert into the
aspnet_Membership table

So... how do I do this kind of mapping assuming I can't change my
database schema?

-- 
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en.

Reply via email to