我的背景是:Using Razor to create a form for hierarchy of domain models
我有一个类Project
和一个名为Projects
的数据库中的表。
在此表中有一个名为AddressID
的列...它与另一个地址表相关。
地址由几个属性组成......地址1,地址2,城市,国家,州。我已将它们映射到Address
类中,以便它与地址表相关联。
因此,Project通过AddressID ...整数来与Address表相关。
在我的Project课程中,由于某种原因,我认为我可以这样做:
class Project
{
Address Address;
}
然后我意识到当我去获取一个项目 - int
列AddressID(项目关系列)时 - 它将尝试映射到Project的Address属性并说出类似“不兼容类型”的内容。我需要更像这样的东西吗?
class Project
{
int AddressID {get;set;}
Address Address {get;set;}
}
然后当我从项目存储库中调用一些项目时,我会使用AddressID(从db映射)将整个Address映射到Address属性,以提供足够的信息来查找Db中的Address?
这类事情的常用技术是什么?
答案 0 :(得分:0)
你可以试试这个:
class Project
{
public int AddressID { get; set; }
[ForeignKey("AddressID")]
public Address Address { get; set; }
}
class Address
{
// Your address properties here...
}
现在,当您从数据库中获取实体时,您可以使用Address
中的Project
扩展方法明确包含.Include()
的{{1}},如下所示:< / p>
System.Data.Entity
如果您启用了延迟加载并且不处理public IEnumerable<Project> GetProjectsAndAddresses()
{
return myDbContext.Projects.Include(x => x.Address);
}
实例,则当您尝试访问该实例时,EF将尝试加载该外部实体(在这种情况下,您不需要使用{{ 1}}方法)。