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

比如我有一个类继承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

{

}


绝地无双
浏览 534回答 1
1回答

白板的微信

最好是改变架构。这是架构师应该做的工作,应该向他提出,否则他就是不负责任的架构师。OjectContext这个东西里面放了一堆底层的方法属性,用起来让人火大的,实现还是能实现的,就是麻烦的要命,架构师的责任不应该有我们来承担。要不然以后再碰上个什么需求,你还是要用ObjectContext来解决,还是不能用DbContext,浪费的时间远远不止,而且还是那么多人用。再说也不至于那么麻烦吧,可能是架构扩展性的原因吧,考虑不够周全,我们现在的项目任意版本的任意加,我们的ORM开始用L2S,后来EF4.0来了,用ObjectContext,再后来灯4.1稳定了,直接用DbContext,然后在迁移到4.3.1,非常平滑,非常简单,而且以前用ObjectContext或者是DataContext写的都还能正常和DbContext一起正常工作。写一个OrmContextCreateFactory就可以很好的管理所有的Context的并存问题。简单的工厂模式就可以生产各种框架各种版本的Context了,谁也不能保证以后微软升级不会再出个XXXContext吧。
打开App,查看更多内容
随时随地看视频慕课网APP