【问题标题】:Can context of Entity Framework be extracted from object later on?以后可以从对象中提取实体框架的上下文吗?
【发布时间】:2012-01-31 21:46:18
【问题描述】:

考虑到我使用类似的代码(有或没有使用(考虑到 using(??) 可能会处理上下文)):

IQueryable<Konsultanci> listaKonsultantow;
using (var context = new EntityBazaCRM(Settings.sqlDataConnectionDetailsCRM)) {
       listaKonsultantow = from k in context.Konsultancis
                                                   select k;
}

我能否以某种方式提取稍后从 Konsultanci 对象中使用的上下文,这样我就不必在类的顶部存储上下文?

 foreach (Konsultanci test in listaKonsultantow) {
       // get context here? 
 }

【问题讨论】:

  • 我从 SQL Server 加载这些对象。这是stackoverflow.com/questions/9086722/…stackoverflow.com/questions/9083709/… 的延续,在经历了很多错误之后,我在课堂上定义了private readonly EntityBazaCRM context = new EntityBazaCRM(Settings.sqlDataConnectionDetailsCRM);,它解决了我的问题。但我宁愿从我正在使用的对象中获取上下文,而不是在类中定义一个。

标签: c# sql-server winforms entity-framework


【解决方案1】:

由于您在 using 块的末尾处理上下文,因此您甚至不应该尝试。

【讨论】:

  • 如果我不使用using 怎么办?但是EntityBazaCRM context = new EntityBazaCRM(Settings.sqlDataConnectionDetailsCRM); ?
  • @MadBoy,那你打算什么时候处理你的上下文?
  • 在 GUI 上关闭?我正在尝试解决出现的问题,例如我在此处描述的问题 (stackoverflow.com/questions/9083709/…)。在与它战斗了 5 个小时后,将上下文放在首位并重用它解决了问题。所以现在我正在努力寻找最佳方法。除非你有办法以不同的方式解决问题,否则我可以重新使用 using
【解决方案2】:

将上下文作为关注点分离会导致许多您感兴趣的设计模式的路径。您绝对应该研究存储库和依赖注入(unity 是 MS 的 DI 容器,它有助于管理依赖关系,例如您遇到的数据上下文问题)。如果这些主题超出了您的项目范围,那么重新键入您的 using 语句可能不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多