【发布时间】:2019-03-07 23:06:35
【问题描述】:
最近我开始学习 Entity Framework Core,我很好奇在实体类中使用 DbContext 实例是否可以。
示例代码:
class User {
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Order> Orders { get; set; }
public void LoadOrders() {
using (var context = new StoreContext()) {
Orders = context.Orders
.Where(x => x.UserId == Id)
.ToList();
}
}
}
用户实体与 Order 类有关系,它们都在使用来自实体框架的迁移创建的数据库中具有适当的表。 LoadOrders() 方法的目的只是在需要时为当前用户加载相关实体。
现在我想知道这是否是一种有效的方法?
或者我应该总是在加载父对象的同时加载相关实体? (例如 .Include().ThenInclude())
或者也许 LoadOrders() 方法的代码应该位于一些额外的类中,比如 UserHelper 将与 User 实体一起使用。
【问题讨论】:
-
我认为最好的选择是在客户端代码中使用它。
-
应该是有效的。创建数据库结构和读/写数据库的问题是两个独立的问题,应该受到更松散耦合设计的威胁。如果您想测试您的代码,我还建议您使用一些设计模式,例如存储库模式。
-
实际上领域驱动设计建议做这样的事情来避免“贫血类”。而是在实例化 DbContext 时,尝试将其传递给方法。看看这篇文章。 thereformedprogrammer.net/…
标签: c# .net entity-framework design-patterns entity-framework-core