首页 新闻 会员 周边

Entity Framework 4.1 在继承自ObjectContext的子类中如何移除默认约定?

0
悬赏园豆:20 [已解决问题] 解决于 2017-10-15 22:17

比如我有一个类继承DbContext 可以重写 OnModelCreating来移除约定

Public class SampleEntites : DbContext

{

 

protectedoverridevoid OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove
<PluralizingTableNameConvention>();//移除复数表名的契约

modelBuilder.Conventions.Remove
<IncludeMetadataConvention>();//防止黑幕交易 要不然每次都要访问 EdmMetadata这个表

}

但现在SampleEntites不得不继承ObjectContext(架构已经写死了), 要怎么移除上面的约定。

Public class SampleEntites : ObjectContext

{

}

xiaobopoe的主页 xiaobopoe | 初学一级 | 园豆:138
提问于:2012-07-30 11:47
< >
分享
最佳答案
1

最好是改变架构。这是架构师应该做的工作,应该向他提出,否则他就是不负责任的架构师。

OjectContext这个东西里面放了一堆底层的方法属性,用起来让人火大的,实现还是能实现的,就是麻烦的要命,架构师的责任不应该有我们来承担。要不然以后再碰上个什么需求,你还是要用ObjectContext来解决,还是不能用DbContext,浪费的时间远远不止,而且还是那么多人用。

再说也不至于那么麻烦吧,可能是架构扩展性的原因吧,考虑不够周全,我们现在的项目任意版本的任意加,我们的ORM开始用L2S,后来EF4.0来了,用ObjectContext,再后来灯4.1稳定了,直接用DbContext,然后在迁移到4.3.1,非常平滑,非常简单,而且以前用ObjectContext或者是DataContext写的都还能正常和DbContext一起正常工作。写一个OrmContextCreateFactory就可以很好的管理所有的Context的并存问题。简单的工厂模式就可以生产各种框架各种版本的Context了,谁也不能保证以后微软升级不会再出个XXXContext吧。

收获园豆:20
纯粹的郭子 | 初学一级 |园豆:62 | 2012-08-01 14:08
其他回答(1)
1

项目中不允许用DbContext?

dudu | 园豆:30994 (高人七级) | 2012-07-30 12:15

架构已经写好了,改的话也得是架构师去改,而且改动可能挺大。

支持(0) 反对(0) xiaobopoe | 园豆:138 (初学一级) | 2012-07-30 12:46

@xiaobopoe: 实现有难度,找到一篇参考帖子:EF 4.1 - Use code-first without DbContext API

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2012-07-30 13:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册