如何用fluent api把下面的表格联系起来?
我需要通过LinkTable获取第二个表数据,后者存储Main和Second表的ids。

以下是我的模特:
public class MainTable
{
public int ID { get; set; }
...
...
public ICollection<LinkTable> LinkTable { get; set; }
}
public class LinkTable
{
public int ID { get; set; }
...
...
public MainTable MainTable { get; set; }
public SecondTable SecondTable { get; set; }
}
public class SecondTable
{
public int ID { get; set; }
...
...
public ICollection<LinkTable> LinkTable { get; set; }
}我的地图是这样的:
HasRequired(t => t.MainTable).WithMany(t => t.LinkTable).HasForeignKey(t => t.MainTable_ID);
HasRequired(t => t.SecondTable).WithMany(t => t.LinkTable).HasForeignKey(t => t.SecondTable_ID);并试图获取数据:
MyDBContext.MainTable.Include("LinkTable").FirstOrDefault();当我试图预先使用LinkTable获取SecondTable数据时,我得到了一个错误:
对象引用未设置..。
@foreach (var item in Model.LinkTable)
{
<p>@item.SecondTable.ID</p>
}发布于 2016-01-30 01:46:15
为了避免这种异常,您需要在构造函数中初始化导航属性:
public class MainTable
{
public MainTable()
{
LinkTable=new List<LinkTable>();
}
public int ID { get; set; }
...
...
public ICollection<LinkTable> LinkTable { get; set; }
}此外,您可以使用强类型的Include扩展方法,并且可以避免可能的运行时异常:
MyDBContext.MainTable.Include(mt=>mt.LinkTable).FirstOrDefault();现在,如果您想加载另一个级别,在本例中是SecondTable,您可以这样做:
MyDBContext.MainTable.Include(mt=>mt.LinkTable.Select(lt=>lt.SecontTable)).FirstOrDefault();在上面引用的链接中,您可以找到更多关于如何加载不同级别的示例。
https://stackoverflow.com/questions/35097006
复制相似问题