如何在实体框架代码中首先设置外键关系?

时间:2016-07-01 14:05:03

标签: entity-framework ef-code-first

我有三个实体,用户,域和角色。

我有这个类来定义三个实体的关系:

public class UserDomainRole
{
        [Key]
        public int UserId { get; set; }
        [Key]
        public int DomainId { get; set; }
        [Key]
        public int RoleId { get; set; }
}

那么如何设置UserDomainRole和其他三个表之间的外键关系? 是这样的吗?

public class DeniedDomainRole
{
    [Key]
    public int UserId { get; set; }
    public virtual User User { get; set; }
    [Key]
    public int DomainId { get; set; }
    public virtual Domain Domain { get; set; }
    [Key]
    public int RoleId { get; set; }
    public virtual Role Role { get; set; }
}

那么实体框架会将关系解决掉吗?

2 个答案:

答案 0 :(得分:0)

此代码将为您提供一条例外消息“无法确定复合主键排序”

首先在代码中如果要创建复合主键,则必须使用它来指定键/列顺序,如下所示:

[Key, Column(Order=1)]

其中

订单=表格上的复合主键/列顺序

public class UserDomainRole
{
        [Key, Column(Order=1)]
        public int UserId { get; set; }

        [Key, Column(Order=2)]
        public int DomainId { get; set; }

        [Key, Column(Order=3)]
        public int RoleId { get; set; }
}
  

那么如何设置UserDomainRole和其他三个表之间的外键关系?是这样的吗?

这取决于您拥有的关系类型:

  • 配置一对一或一对一关系:

在这里,我们将配置两个实体之间的一对一或零关系,例如, Entity1可以与Entity2的零个实例或仅一个实例相关联。 http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

  • 配置一对一或一对一关系:

在这里,我们将配置两个实体之间的一对一或零关系,例如, Entity1可以与Entity2的零个实例或仅一个实例相关联。 http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

  • 配置多对多关系:

在这里,我们将学习如何配置Student和Course实体类之间的多对多关系。学生可以参加多门课程,多名学生可以参加一门课程。 http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

答案 1 :(得分:0)

通过这种方式,您可以与用户模型

建立关系
<div class="container">
<img src="http://67.media.tumblr.com/15b26a66682a68facad249bd442ced38/tumblr_nw48hrdLfp1sikueao2_1280.jpg">
</div>

?可以使你的外国人变得可空。