【发布时间】:2018-10-17 23:02:09
【问题描述】:
简而言之,实体框架应该如何处理相关表。
aspnetcore 2.0
public class Table1{
[Key]
public int Id{get;set;}
[ForeignKey("Table2")]
public int Table2Id {get;set;}
public virtual Table2 Table2{get;set;}
}
public class Table2{
[Key]
public int Id{get;set;}
}
我假设声明是这样的
var t1 = context.Table1List.FirstOrDefault( j => j.Id == 1)
会自动填充 Table2 但 t1.Table2 为空。
如果我要调用 context.Table2List.FirstOrDe..... 那么即使没有设置属性,也会填充 t1.Table2。所以 EF 认识到这种关系在我实际调用数据库之前不会填充。
我是否理解 EF 是如何工作错误的,或者只是我的代码中的一个错误。也许与延迟加载有关。
我已经阅读了微软的教程,但对它的工作原理和实际工作原理并没有太多了解。
表 1 和表 2 彼此之间只有一对一的关系。
【问题讨论】:
-
您的设计令人困惑 -
Id应该是Table1的主键还是Table2的外键?能否请教一下这两个表的 SQL 定义? -
您需要在填充的 Table2 中添加一个包含:
context.Table1List.Include(t => t.Table2).FirstOrDefault( j => j.Id == 1) -
请检查我的回答。
-
@aguafrommars 完全正确。和我的回答一样。
标签: c# entity-framework asp.net-core