简体   繁体   中英

Entity Framework - Multiple navigation property

I started working with Entity Framework and I have one BIG problem. I want a many-to-many relation between entities User and Role .

So I created 3 tables User , Role , UserRoles

D b

Next I created 3 entities:

public class User
{
    public virtual int UserId { get; protected set; }
    public virtual string UserName { get; set; }
    public virtual string Password { get; set; }
    public virtual DateTime CreateDate { get; set; }
    public virtual ICollection<UserRole> Roles { get; set; }
    public virtual ICollection<UserRole> CreatedRoles { get; set; }
}

public class Role
{
    public virtual int RoleId { get; protected set; }
    public virtual string Name { get; set; }
}

public class UserRole
{
    public virtual int UserRoleId { get; protected set; }
    public virtual int UserId { get; set; }
    public virtual User User { get; set; }

    public virtual int RoleId { get; set; }
    public virtual Role Role { get; set; }
    public virtual DateTime CreateDate { get; set; }

    public virtual int CreateUserId { get; set; }
    public virtual User CreateUser { get; set; }
}

I want to separate mapped user from created user. And In this step Entity Framework start to throw a bugs.

Next I want navigate from User object to his mapped roles and to his created mappings.

Can I configure Entity Framework to do these things?

You should apply InverseProperty attribute:

public class User
{
    public virtual int UserId { get; protected set; }
    public virtual string UserName { get; set; }
    public virtual string Password { get; set; }
    public virtual DateTime CreateDate { get; set; }

    [InverseProperty("User")]
    public virtual ICollection<UserRole> Roles { get; set; }

    [InverseProperty("CreateUser")]
    public virtual ICollection<UserRole> CreatedRoles { get; set; }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM