首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

entity framework 实体类如何声明外键关系

2013-09-06 
entity framework 实体类怎么声明外键关系比如有一个主表master,有字段id,name,.....,主键ID对应的明细表:

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");


            //定义主键
            modelBuilder.Entity<Message>().HasKey(x => x.Id);
            //定义对照关系
            modelBuilder.Entity<Message>()
                .HasOptional(x => x.From)//可空的一
                .WithMany()//对多
                .Map(x => x.MapKey("FromId"))//对应自己存储的FromId隐藏外键
                .WillCascadeOnDelete(false);//这行你暂时可以忽略 意为不进行级联删除

热点排行