Entity framework Ef代码一对多关系

Entity framework Ef代码一对多关系,entity-framework,Entity Framework,如何使用不同的主键和外键名称定义EF中的一对多关系 已更新 公共类Tb1 { [关键] 公共int-ID{get;set;}//primary **公共int外键{get;set;}//外键** 公共字符串名称{get;set;} [外国(“外国钥匙”)] 公共虚拟ICollection Tb2{get;set;} } 公共类Tb2 { [关键] 公共int-ID{get;set;}//primary public int tb1ID{get;set} 公共字符串地址{get;set;} }

如何使用不同的主键和外键名称定义EF中的一对多关系
已更新

公共类Tb1
{
[关键]
公共int-ID{get;set;}//primary
**公共int外键{get;set;}//外键**
公共字符串名称{get;set;}
[外国(“外国钥匙”)]
公共虚拟ICollection Tb2{get;set;}
}
公共类Tb2
{
[关键]
公共int-ID{get;set;}//primary
public int tb1ID{get;set}
公共字符串地址{get;set;}
}

这里我想要主键上的一对多关系:TB1处的外键
外国kye:tb1ID在TB2

如何?

我通常的做法是也包括导航属性。因此,我将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;} 
}

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

我通常的做法是也包括导航属性。因此,我将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;} 
}

代码优先现在应该能够自动理解关系。如果您不想要Tb1ID属性,可以删除它,它仍然可以正常工作。

什么时候为它设置null?你什么时候从数据库取的?如果您首先在DbRepository中使用代码,它不会像您预期的那样延迟加载代码。尝试执行以下操作以获取Tb2和所有相关Tb1<代码>变量结果=repository.Tb2s.Include(t=>t.Tb1)延迟加载最初设置为false db.Configuration.LazyLoadingEnabled=false;好的,但是什么时候可以得到空值呢?你能在这里提供一些代码让我们看到问题吗?
Tb1ID
的值是否正确?何时为空?你什么时候从数据库取的?如果您首先在DbRepository中使用代码,它不会像您预期的那样延迟加载代码。尝试执行以下操作以获取Tb2和所有相关Tb1<代码>变量结果=repository.Tb2s.Include(t=>t.Tb1)延迟加载最初设置为false db.Configuration.LazyLoadingEnabled=false;好的,但是什么时候可以得到空值呢?你能在这里提供一些代码让我们看到问题吗?
Tb1ID
的值是否正确?