日期:2014-05-17  浏览次数:20575 次

entity framework 实体类怎么声明外键关系
比如有一个主表master,有字段id,name,.....,主键ID
对应的明细表:detail,有字段,id,No,.......,组合主键id,No
master和detail 为1对多关系
detail 通过id和主表master的id字段关联
模型中该怎么写才能反映这种主外键的关系

master的model如下

public class master
 {
        [Key]
        [Required()]
        public string id { get; set; }
 
        public string name{ get; set; }

        .............
}


detail表对应的model如下

public class detail
{

        [Key]
        [Column(Order = 0)]
        public string id{ get; set; }

        [Key]
        [Column(Order = 1)]
        [Required()]
        public int No{ get; set; }
        .........................
}



------解决方案--------------------
吧detail类作为master类的一个属性
public class master  {        
 [Key]         [Required()]     
    public string id { get; set; }       
    public string name{ get; set; }     
   public detail d{get;set;}
   ............. }
------解决方案--------------------
在你的继承DbContext的 XxxContext里面重写OnModelCreating方法

然后在里面设置契约
比如:


            //定义对应的数据库表的名称
            modelBuilder.Entity<Message>().ToTable("Xxx_Message");