【问题标题】:Ef code first one to many relationshipEf code first 一对多关系
【发布时间】:2012-04-20 06:43:37
【问题描述】:

如何在 EF 中定义具有不同主键名和外键名的一对多关系
更新

Public class Tb1
{
[Key]
public int ID{get; set;}         // primary
**public int foreignKey{get; set;} //foreign key**
public string name{get; set;} 
[Foreign("foreignKey")]
public virtual ICollection<Tb2> Tb2{ get; set; }
}

Public class Tb2
{
[Key]
public int ID {get; set;} //primary
public int tb1ID {get; set}
public string address {get; set;} 
}


在这里,我想要主键上的一对多关系:TB1 上的外键
外国kye:TB2的tb1ID
怎么样??

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    我的 Nomal 方法也是包含导航属性。所以我会像这样改变 Tb2:

    Public class Tb2
    {
      [Key]
      public int ID {get; set;} //primary
      public int Tb1ID {get; set;} //notice I changed case on this variable as well
      public Tb1 Tb1 {get; set;} //this is the new variable
      public string address {get; set;} 
    }
    

    Code first 现在应该能够自动理解这种关系。如果您不想要 Tb1ID 属性,可以将其删除,它仍然可以正常工作。

    【讨论】:

    • 你什么时候得到空值?当你从数据库中获取它?如果您首先将代码与 DbRepository 一起使用,它不会像您预期的那样延迟加载它。尝试执行以下操作以获取具有所有相关 Tb1 的 Tb2。 var result = repository.Tb2s.Include( t =&gt; t.Tb1 );
    • 延迟加载最初设置为 false db.Configuration.LazyLoadingEnabled = false;
    • 好的,但是你什么时候得到它为空?你能在这里提供一些代码以便我们看到问题吗? Tb1ID 的值是否正确?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多