WPF应用程序中的全局实体框架上下文
我正在开发使用Entity Framework(.NET 3.5)的
WPF应用程序.它访问整个地方的实体.我担心整个应用程序在实体方面的一致性.我应该在不同的视图中实例化单独的上下文,还是应该(并且这是一个很好的方法)实例可以全局访问的单个上下文?
例如,我的实体模型有三个部分:发货(带有子包和更多子内容),公司/联系人(带有子地址和电话)和磁盘规格. Shipments和EditShipment视图访问DiskSpecs,OptionsView管理DiskSpecs(创建,编辑,删除).如果我编辑DiskSpec,如果我有单独的上下文,我必须在ShipmentsView中有一些东西来检索最新的规格吗? 如果有一个整体上下文可以安全地从应用程序的其余部分检索它的对象,那么我想这是要走的路.如果是这样,该实例将放在哪里?我正在使用VB.NET,但我可以从C#翻译得非常好.任何帮助,将不胜感激. 我只是不希望其中一个应用程序用户必须在应用程序的不同部分重新加载十几次来获取新数据. 更新: 好的,所以我更改了我的应用程序如下: >所有上下文都是在使用块中创建的,以便在不再需要它们之后将其处理掉. 这让当前的问题解决了: 我的新问题是,你应该怎么做呢.一个很好的例子实体查询和实体保存代码剪断将会有很长的路要走,因为我试图得到我曾经认为是一个简单的交易工作.
全局静态上下文很少是正确的答案.考虑如果在执行此应用程序期间重置数据库会发生什么 – 您的SQL连接已消失,并且使用静态上下文的所有后续请求都将失败.
建议您找到一种方法,让您的实体上下文的生命周期缩短 – 打开它,做一些工作,处理它,…… 至于将不同的对象放在同一个EDMX中,如果它们在同一个EDMX中需要它们之间的任何关系,那几乎肯定是正确的答案. 至于重新加载 – 用户永远不必这样做.在幕后,您可以打开一个新的上下文,从数据库重新加载对象的当前版本,应用他们在UI中所做的更改,然后将其保存回来. 您可能还希望查看分离的实体,并在尝试保存更改并且其他人更改了数据库中的同一对象时要小心乐观并发异常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |