【问题标题】:Entity Framework - Multiple navigation property实体框架 - 多个导航属性
【发布时间】:2016-03-05 15:55:58
【问题描述】:

我开始使用实体框架,但遇到了一个大问题。我想要实体 UserRole 之间的多对多关系。

所以我创建了 3 个表 UserRoleUserRoles

接下来我创建了 3 个实体:

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; }
}

我想将映射的用户与创建的用户分开。并且在这一步实体框架开始抛出错误。

接下来我想从User 对象导航到他的映射角色和他创建的映射。

我可以配置实体框架来做这些事情吗?

【问题讨论】:

  • 我认为这在 DB 中关系很好,所以我想在 .NET 中创建良好的实体

标签: c# entity-framework foreign-keys navigation-properties


【解决方案1】:

你应该应用 InverseProperty 属性:

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; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2016-03-29
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多