小编toa*_*ast的帖子

WPF/EntityFramework上下文生命周期

问题

我们目前在WPF应用程序上遇到架构问题.它涉及EntityFramework上下文管理,它实例化一次并在应用程序的整个生命周期中使用.因此,我们最终会遇到缓存问题,实体在加载一次时不会更新.使用该应用程序时,我们的实体已过时.

技术规格

  • Wpf项目
  • .Net Framework 4客户端配置文件
  • MEF(包含在Framework 4.0 System.ComponentModel.Composition中)
  • 设计模式MVVM
  • 多用户应用程序

建筑

这是当前架构的架构.

架构架构

服务层

  • 管理对业务规则的调用(业务层)
  • 业务规则完成后保存上下文(通过UnitOfWork)
  • 只能由ViewModel调用

业务层

  • 定义业务规则
  • 只能由服务层调用

存储库层

  • 执行更改上下文数据的方法(插入,更新,删除)
  • 继承ReadOnlyRepository
  • 只能由业务层调用

ReadOnlyRepository图层

  • 返回数据的执行方法(选择)
  • 可以随处调用(ViewModel,服务层,业务层)

的UnitOfWork

  • 管理上下文实例化
  • 保存上下文
  • 上下文仅适用于存储库

视图模型

[Export(typeof(OrderViewModel))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class OrderViewModel : ViewModelBase
{
   private readonly IOrderManagementService _orderManagementService;
   private readonly IOrderReadOnlyRepository _orderReadOnlyRepository;

   [ImportingConstructor]
   public OrderViewModel(IOrderManagementService orderManagementService, IOrderReadOnlyRepository orderReadOnlyRepository)
   {
      _orderManagementService = orderManagementService;
      _orderReadOnlyRepository = orderReadOnlyRepository;
   }
}
Run Code Online (Sandbox Code Playgroud)

服务层

public class OrderManagementService : IOrderManagementService
{
   private readonly IUnitOfWork _unitOfWork;
   private readonly IOrderManagementBusiness _orderManagementBusiness; …
Run Code Online (Sandbox Code Playgroud)

c# architecture wpf entity-framework

5
推荐指数
1
解决办法
2810
查看次数

标签 统计

architecture ×1

c# ×1

entity-framework ×1

wpf ×1