实体框架代码优先:具有两个外键的表

Posted

技术标签:

【中文标题】实体框架代码优先:具有两个外键的表【英文标题】:Entity Framework Code First: Table with two foreign keys 【发布时间】:2013-02-04 21:49:42 【问题描述】:
 public class User
    
        [Key]
        public int UserId  get; set; 
        public string UserName  get; set; 
    



public class Building
    
        [Key]
        public int BuildingId  get; set; 
        public string BuildingName  get; set; 
    

 public class UserBuildings
    
        //these are the foreign keys
        public int UserId  get; set; 
        public int BuildingId  get; set; 
        public int BuildingQuantity  get; set; 
    

我一直在查看其他带有两个伪造密钥的示例,但它们似乎没有回答我的问题。

在 UserBuildings 表中,需要 UserId 和 BuildingId 才能使 UserBuildings 表中的记录唯一。 (不会有两条记录具有相同的 UserId 和 BuildingId,尽管它们可能具有相同的一条)

【问题讨论】:

【参考方案1】:

应该这样做

 public class UserResources
    
        [Key, Column(Order=0)]
        public int UserId  get; set; 
        [Key, Column(Order=1)]
        public int BuildingId  get; set; 
        public string BuildingName  get; set; 
    

【讨论】:

感谢您的意见。我之前尝试过这个,但是有一个 SQL 数据库错误,说我不能有两行具有相同值的一列。 澄清:错误是当我有两个具有相同 UserId 但不同 BuildingId 的记录时。但我不希望这给我一个错误

以上是关于实体框架代码优先:具有两个外键的表的主要内容,如果未能解决你的问题,请参考以下文章

实体框架 4.1 代码优先映射到将主键作为外键列的表

具有 2 个外键实体框架的表

实体框架 4.1 代码优先外键 ID

带有外键的实体框架选择为空?

实体框架代码优先 - 来自同一个表的两个外键

如何让jpa休眠创建具有多对一但没有外键的实体