Asp.net 如何访问实体框架外键对象
我正在使用Entity Framework创建一个ASP.NET项目,很难理解如何在Entity Framework中访问外键对象 我有一个这样的模型:Asp.net 如何访问实体框架外键对象,asp.net,entity-framework,razor,Asp.net,Entity Framework,Razor,我正在使用Entity Framework创建一个ASP.NET项目,很难理解如何在Entity Framework中访问外键对象 我有一个这样的模型: [Key] [Display(Name = "Setup ID")] public int SetupId { get; set; } [ForeignKey("SetupDetails")] [Display(Name = "Setup Details")] public int SetupD
[Key]
[Display(Name = "Setup ID")]
public int SetupId { get; set; }
[ForeignKey("SetupDetails")]
[Display(Name = "Setup Details")]
public int SetupDetailsId { get; set; }
setup.setupdetails.Name
值得注意的是,SetupDetails
在它自己的表中,我们在一个名为Setup
的表中。因此,当我创建一个对象时,我希望能够访问如下内容:
[Key]
[Display(Name = "Setup ID")]
public int SetupId { get; set; }
[ForeignKey("SetupDetails")]
[Display(Name = "Setup Details")]
public int SetupDetailsId { get; set; }
setup.setupdetails.Name
因此,根据我的理解,我需要在对象“设置”中创建和设置对象,如下所示:
然而,当我这样做时,我们得到了一个空指针异常,很明显,如果它是外键,我们知道它存在
我是否只需要将int转换为SetupDetails
类?如果更改此数据类型,则会出现错误:
无法确定“SetupDetails”类型的导航属性“Setup.SetupDetailsId”表示的关系
你在这里想要达到的目标需要我们称之为“导航属性” 当您尝试获取这些数据时,例如:
public void SomeMethod(int setupId)
{
//_context is your DbContext.
var setup = _context.Setup.Where(i => i.SetupId == setupId)
.Include(i=>i.SetupDetails)
.FirstOrDefault();
//Now you can reach the "SetupDetails" value with => setup.SetupDetails.Name
var setupDetailsName = setup.SetupDetails.Name;
}
你在这里想要达到的目标需要我们称之为“导航属性” 当您尝试获取这些数据时,例如:
public void SomeMethod(int setupId)
{
//_context is your DbContext.
var setup = _context.Setup.Where(i => i.SetupId == setupId)
.Include(i=>i.SetupDetails)
.FirstOrDefault();
//Now you can reach the "SetupDetails" value with => setup.SetupDetails.Name
var setupDetailsName = setup.SetupDetails.Name;
}
在Setups模型中创建虚拟类型,
public virtual SetupDetails SetupDetails{get;set;}
访问SetupDetails时,SetupDetails.SetupDetails?.Name
像这样使用在Setups模型中创建虚拟类型,public virtual SetupDetails SetupDetails SetupDetails{get;set;}
访问SetupDetails时,setup.setupdetails?.Name
这样使用如果该setupId的setupdetails数据为null,则引发异常。如果该setupId的setupdetails数据为null,则引发异常。