【发布时间】:2017-09-17 15:01:48
【问题描述】:
我有一个枚举:
public enum EnumSample{
Setup = 1,
Pending = 7
}
我有一个实体(我正在使用 EF)存储在数据库中,其 EnumSample 属性设置为 EnumSample.Pending。当我查询时,数据库将此值反映为7。但是,当我从 C# 中检索相同的实体(使用 EF)时,我得到了一个不正确的类型映射(我得到了Setup,而我应该得到Pending)。所有 ID 都经过验证。截图如下。这可能是什么原因造成的?
更新
重新启动应用程序让我得到了我的期望 - 问题是 dbContext 的实例在请求之间停留。我可以做using var db = new AppContext,它工作正常。
我在UnityContainer 上配置了以下内容:
container.RegisterType<AppContext>(new ContainerControlledLifetimeManager());
我尝试了各种不同的生命周期管理器 - PerHttpRequestLifetimeManager 无法根据我看到的其他指导解决问题。
服务层方法示例:
public class EventService : BaseService
{
public readonly AppContext _db;
private readonly NotificationService _notificationService;
public EventService(AppContext db, NotificationService notificationService)
{
_db = db;
_notificationService = notificationService;
}
我需要的行为是 EventService 和 NotificationService 具有相同的 AppContext 实例,但是在请求之间,上下文被释放并且我得到新的状态/新实例。
【问题讨论】:
-
您是否可以使用分析器或扩展事件来查看实体框架生成的查询实际上是什么样的?然后我们可以使用它来验证它是否产生与您用于检查数据库的结果相同的结果。
-
你是先使用代码吗?
-
@vendettamit 我是。我发现如果我重新启动应用程序,我会得到我所期望的。我相信这与陈旧的 dbContext 有关...
-
你确定不只是自己设置属性吗?在setter上加断点
-
好的,去吧!!如果我不是,那么肯定会有人对其进行审查。
标签: c# asp.net entity-framework enums ef-code-first