解决 如何在服务库体系结构中实现DbSet和DbContext?

米切尔恩11

活跃的成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
我正在将.NET Core Web应用程序从MVC更新为服务库模式。

我的问题是,如何实现DbSet<>当您添加服务和存储库层时?
我最初将它们添加到Data文件夹下的ApplicationDbContext文件中。这还正确吗?那我只用DI来调用我的数据库 仓库?
C#:
private readonly ApplicationDbContext _context;

public ParkController(ApplicationDbContext context)
{
  _context = context;
}

还是每个表都有自己的DbContext? (DbSet在哪里<> go then?)
C#:
private readonly ParkDbContext _parkContext;

public ParkController(ParkDbContext parkContext)
{
  _parkContext= parkContext;
}

如果我在这里完全不在基地,或者胡说八道,请告诉我。
谢谢!
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
我们曾经在我的办公室中使用服务和存储库。我们仍然使用服务,但决定使用EF时,存储库没有增加任何价值。您的EF上下文基本上是一个存储库层。
 

米切尔恩11

活跃的成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
我们曾经在我的办公室中使用服务和存储库。我们仍然使用服务,但决定使用EF时,存储库没有增加任何价值。您的EF上下文基本上是一个存储库层。

那讲得通。
所以您仍然有1个服务层 模特,对不对?
然后,用于共享多个模型中的值的模型的附加服务层?

非常感谢!
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
所以您仍然有1个服务层 模特,对不对?
是。
然后,用于共享多个模型中的值的模型的附加服务层?
通常,我们将使用分层模型,因此任何组合的数据仍将来自顶级模型的服务,并且具有其他单个实体或实体集合。例如,您可能有一个 家长服务 和一个 儿童服务。前者可能有一种方法来获得 父母 对象和另一个得到一个 父母 与相关的孩子一起,而后者可能有一种方法来获得 儿童 对象和另一个得到一个 儿童 与相关的父母。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
出于好奇,借助服务库模式和分层模型,如何保持数据一致性?服务是否相互传递内部版本或时间戳,以便返回"view"对象模型是否一致?

这是一个人为的示例:我有一个发票,该发票具有:客户,发票总额和发票行项目。发票本身是父对象,而客户和发票行项目是子对象。因此,我通过ID向InvoiceService索要发票,然后取回发票总额,客户和行项目。我在GUI中向用户显示客户名称,订单项摘要和总数。因此,目前还没有问题。用户决定下钻至订单项以获取更多详细信息,因此LineItemService上存在一个请求。当用户查看订单项详细信息时,市场部会在客户通知他们结婚并更改其名称时更改客户的名称。当用户查看完订单项详细信息并想弹出时,将在InvoiceService上请求LineItem.Parent。 InvoiceService是否会返回具有旧版Customer的Invoice对象,还是会返回具有新Customer的Invoice?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
如今,我们几乎专门进行Web开发,因此我们几乎总是回到数据库以获取最新数据。在Windows应用程序中,我希望您的方案将显示旧的Customer数据,因为它缓存在上下文中。除非可以刷新数据库的上下文,否则您将看到第一次检索到的任何数据。
 
最佳 底部