【发布时间】:2019-12-16 12:17:00
【问题描述】:
是否可以从具有延迟加载导航属性的模型创建 DbQuery?当我尝试这样做时,出现以下错误
从“Castle.Proxies.ExtendedStudentProxy”上的“前缀”获取值 --> 无法跟踪“ExtendedStudent”类型的实例,因为它是查询类型,只能跟踪实体类型。
我认为 DbQuery 是只读的,所以不应该将它们作为默认行为进行跟踪吗?我错了吗?
这是我使用的代码示例:
型号:
public class ExtendedStudent {
public string FirsName {get; set;}
public virtual Prefix Prefix {get; set;}
}
public class Prefix {
public int Id {get; set;}
public string Name {get; set;}
}
Startup.cs
builder.AddDbContext<ApplicationDbContext>( b => b.UseLazyLoadingProxies()
.UseSqlServer(connectionString));
ApplicationDbContext.cs
public class ApplicationDbContext {
...
public DbSet<Proxy> Proxies {get; set;}
public DbQuery<ExtendedStudent> ExtendedStudents {get; set;}
...
}
【问题讨论】:
-
正如您在下面看到的,关于这一点还有很多话要说。应该问的第一个问题是:你能显示引发异常的代码吗?查询类型不被跟踪(也不应该被跟踪),但您似乎以仅适用于实体类型的方式查询它们。
标签: c# entity-framework-core lazy-loading sql-view ef-core-2.1