小编chu*_*wik的帖子

实体框架返回旧数据

我有一个问题,EF没有返回3层WPF应用程序中的最新数据,我怀疑它与我如何处理我的上下文的生命周期有关.这是场景:

UnitOfWork中包含几个存储库.还有一个服务(MyService),它使用UnitOfWork.还必须直接从UI调用此UnitOfWork,而不通过服务.

在我的主窗口的ViewModel中,我创建了一个新窗口(首先使用ViewModel):

var dialog = new DialogViewModel(_eventAggregator, _unitOfWork, Container.Resolve<CarService>());
Run Code Online (Sandbox Code Playgroud)

这个主窗口ViewModel有一个UnitOfWork,它已经在构造函数中注入,并传递给DialogViewModel.

CarService的构造函数也需要一个UnitOfWork,它也在它的构造函数中注入:

public CarService(IUnitOfWork unitOfWork){
    _unitOfWork = unitOfWork;
}
Run Code Online (Sandbox Code Playgroud)

当在DialogViewModel中使用CarService进行查询以检索某些数据并进行一些更新时,它第一次正常工作.但是,当下次检索该数据时进行相同的查询,而不是返回最新的修改后的数据,它将返回旧的/缓存的数据.使用UnitOfWork(在CarService内部)的查询如下所示:

var values = _unitOfWork.GarageRepository.GetSomeValues();
_unitOfWork.GarageRepository.MakeSomeChangesToTheValuesUsingStoredProcedure();
Run Code Online (Sandbox Code Playgroud)

第二次调用它时,值不包含最新版本的数据; 但它已在DB中成功更新.

我正在使用Unity进行DI,这就是我的容器的样子:

public class Container
{
     public static UnityContainer Container = new UnityContainer();

     // Called once in the AppBoostraper, as soon as the GUI application starts 
     public void BuildUp()
     {
          Container.RegisterType<IUnitOfWork, UnitOfWork>();
          Container.RegisterType<ICarService, CarService>();
     }
}
Run Code Online (Sandbox Code Playgroud)

为什么不返回正确的数据,我该如何解决?

c# entity-framework dependency-injection unity-container unit-of-work

10
推荐指数
1
解决办法
1万
查看次数

实体框架与额外字段的多对多关系(数据库优先)

我有一个程序在数据访问层使用Entity Framework(EF)Database First.我知道为了使EF能够自动生成多对多关系的导航属性,映射表只需要包含一个复合主键:

Project
  - ProjectId (PK)
  - Name

ContentType
  - ContentTypeId (PK)
  - Name

ProjectContentTypeMapping
  - ProjectId (PK)
  - ContentTypeId (PK)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,一切正常,我可以从ContentTypes访问项目,反过来使用导航属性.

但是,我需要具有特定于Projects和ContentTypes之间关系的额外字段,这将是ProjectContentTypeMapping表中的额外列.一旦我添加了这些,我就会松开导航属性,EF会在设计器中显示映射表.

有没有办法在EF(数据库优先)中手动配置这两个表之间的映射?或者,我该如何表示?我在考虑可能有一个带有FK的额外"元数据"表到映射表,但它对我来说看起来很"hacky"......

谢谢

c# database entity-framework ef-database-first

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