none
EF code first 外键问题

    问题

  • public partial class aaa
        {
            public int ID { get; set; }  //自增主键
            public string BatchID { get; set; }    // 非聚集 唯一

         }

    public partial class bbb
        {
            public int ID { get; set; }  //自增主键
            public string BatchID { get; set; }    //外键
            public virtual aaa aaaID { get; set; }
         }

    bbbMAP
    {
    Me.HasRequired(Function(b) b.aaa).WithMany().HasForeignKey(Function(b) b.BatchID)
    }

    问题是: 系统提示 bbb.batchID 和 aaa.ID 的类型不一致

    我想达到效果是: aaa.batchID 和 bbb.batchID 是主外键关系,1:N

    EF6 code first要怎么配置?


    • 已编辑 CJ50 2015年11月19日 7:30
    2015年11月19日 7:29

答案

  • 您好,

    您可以使用ForeignKey特性来配置外键,尝试如下代码。

    public partial class aaa
    {
        public int ID { get; set; }  
        public string BatchID { get; set; }    
        public ICollection<bbb> bbbs { get; set; }
    }
    
    public partial class bbb
    {
        public int ID { get; set; }  
        public string BatchID { get; set; }  
        [ForeignKey("BatchID")]
        public virtual aaa aaaID { get; set; }
    }
    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年11月25日 8:00

全部回复

  • 您好,

    根据你的代码, aaa.ID 类型是int,  bbb.BatchID 的类型是 string. EF 不允许关联不同类型的列为外键关系。所以您需要修改bbb.BatchID 的类型为int.

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年11月19日 8:56
  • 我不想做成 aaa.ID 和 bbb.batchID的啊,,,

    我想达到效果是: aaa.batchID 和 bbb.batchID 是主外键关系,1:N


    2015年11月19日 9:07
  • Me.HasRequired(Function(b) b.aaa).WithMany().HasForeignKey(Function(b) b.BatchID)

    这里指定了bbb.BatchID,怎么指定关联到aaa.BatchID,而不是默认的aaa.ID

    2015年11月20日 3:33
  • 您好,

    您可以使用ForeignKey特性来配置外键,尝试如下代码。

    public partial class aaa
    {
        public int ID { get; set; }  
        public string BatchID { get; set; }    
        public ICollection<bbb> bbbs { get; set; }
    }
    
    public partial class bbb
    {
        public int ID { get; set; }  
        public string BatchID { get; set; }  
        [ForeignKey("BatchID")]
        public virtual aaa aaaID { get; set; }
    }
    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年11月25日 8:00