EF 的静态dbset如何重新映射数据

des_xue 2017-11-29 02:54:56
DbContext 内定义了多个静态dbset,在程序开始运行时初始化DbContext,整个表的数据就已经映射过来了,但是如果在另一个地方修改了数据,我这边的再读出来的数据肯定是不准确了,除了重新初始化DbContext ,还有没有什么别的方法可以重新映射 这一张表的数据
...全文
394 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣殿骑士18 2017-11-29
  • 打赏
  • 举报
回复
只有一种情况用全局Context是合理的,就是单机版程序。
圣殿骑士18 2017-11-29
  • 打赏
  • 举报
回复
引用 12 楼 des_xue 的回复:
[quote=引用 11 楼 daixf_csdn 的回复:] 你既然是向懂EF的请教,就要虚心一点。告诉你有问题,你还说没问题,那我还能说什么呢。
是是是,您说的对,我只是表达一下自己的想法,有不对的您可以指出来,大家探讨一下而已[/quote] 呵呵,市场上EF的书不多,翻译的尤其少,我通读过几遍《Entity Framework 6 Recipes 2nd Edition》。不说精通,至少是比较熟悉EF。你有兴趣也可以看看。
des_xue 2017-11-29
  • 打赏
  • 举报
回复
引用 11 楼 daixf_csdn 的回复:
你既然是向懂EF的请教,就要虚心一点。告诉你有问题,你还说没问题,那我还能说什么呢。
是是是,您说的对,我只是表达一下自己的想法,有不对的您可以指出来,大家探讨一下而已
圣殿骑士18 2017-11-29
  • 打赏
  • 举报
回复
你既然是向懂EF的请教,就要虚心一点。告诉你有问题,你还说没问题,那我还能说什么呢。
des_xue 2017-11-29
  • 打赏
  • 举报
回复
引用 5 楼 daixf_csdn 的回复:
你就不应该使用静态dbset,EF的设计不是这样来用的。这就像湖边插个牌子警告禁止跳湖,你非要跳,还问怎么跳湖才能不死。 dbset应该在一个context生命周期内使用,而且context也不应该用全局或者静态。
我接触到dbcontext 最开始是在asp.net core 里面,他虽然可以在每个页面注入dbcontext,但是每个用户打开网站也只会执行一次初始化,我是这么理解的,所以dbcontext 作为全局使用并没有什么问题
des_xue 2017-11-29
  • 打赏
  • 举报
回复
引用 6 楼 daixf_csdn 的回复:
[quote=引用 楼主 des_xue 的回复:] 但是如果在另一个地方修改了数据,我这边的再读出来的数据肯定是不准确了
这种问题不止是EF有,任何离线数据,读取后就过时了,都有可能被他人修改。跟EF无关。但EF对此冲突有解决方案,但那个比较复杂,没那么容易讲清楚,而且很少会碰到那种场景,我到现在为止都没用过EF修改冲突的解决方案。 而你为什么数据修改冲突这么严重,是因为你认为的创造了数据修改冲突的条件,是错误的用法导致。EF的一个context应该尽快开始尽快结束,而不是用静态,全局,缓存等方法搞乱它。[/quote] 我说的静态不是指static,不好意思表达错误,另外如果直接用SQL语句查询,我至少可以手动刷新数据,但是dbcontext 初始化之后就没办法重新刷新数据了,起初不想重新初始化db 是因为如果我定义的表多了,初始化映射会降低效率,能有单独刷新单个表的数据的方法当然最好
des_xue 2017-11-29
  • 打赏
  • 举报
回复
我说的静态不是指static,是指我写在代码里,不是动态添加的意思,没表达清楚不好意思
圣殿骑士18 2017-11-29
  • 打赏
  • 举报
回复
认为-》人为
圣殿骑士18 2017-11-29
  • 打赏
  • 举报
回复
引用 楼主 des_xue 的回复:
但是如果在另一个地方修改了数据,我这边的再读出来的数据肯定是不准确了
这种问题不止是EF有,任何离线数据,读取后就过时了,都有可能被他人修改。跟EF无关。但EF对此冲突有解决方案,但那个比较复杂,没那么容易讲清楚,而且很少会碰到那种场景,我到现在为止都没用过EF修改冲突的解决方案。 而你为什么数据修改冲突这么严重,是因为你认为的创造了数据修改冲突的条件,是错误的用法导致。EF的一个context应该尽快开始尽快结束,而不是用静态,全局,缓存等方法搞乱它。
圣殿骑士18 2017-11-29
  • 打赏
  • 举报
回复
你就不应该使用静态dbset,EF的设计不是这样来用的。这就像湖边插个牌子警告禁止跳湖,你非要跳,还问怎么跳湖才能不死。 dbset应该在一个context生命周期内使用,而且context也不应该用全局或者静态。
正怒月神 2017-11-29
  • 打赏
  • 举报
回复
不过我没试过 static DbSet<>这样的
正怒月神 2017-11-29
  • 打赏
  • 举报
回复
你先查询一下看看,我觉得应该和static没关系。
exception92 2017-11-29
  • 打赏
  • 举报
回复
重新初始化DbContext -》显示执行查询sql语句。
des_xue 2017-11-29
  • 打赏
  • 举报
回复
有没有懂EF 的帮忙解答一下

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧