看了nopcommerce的代码后,感觉他用EntityFramework方法比较灵活。遗憾是如果有多个数据库的时候,没有给出处理方案,然后我略微改了一下,但发现自己写的代码丑爆了,完全没有办法想设计数据库哪样设计代码!
但等我想找人问的稍后,发现自己没法直观简洁的描述自己遇到的问题。所以觉得自己的问题不在代码上,而是自己处理问题的方式上。之前看过一篇图文,觉得有一句话说的非常好:如果干不好一件事,哪就要干好这件事相关的所有细分。
我遇到的问题如下:
目前的设计如上图。
CustomerRepository是实现与数据库交互的地方,数据库操作是由ObjectContext实现的。
ObjectContext重写了DbContext的OnModelCreating方法,用于将各种EntityMapping(继承自EfEntityConfiguration<>,用于为Entity添加配置)通过反射的方式添加到DbModelBuilder。
当有多个DbContext时,CustomerRepository的父类EfRepository会根据其自身或其继承的所有类和接口(递归)上的ContextName特性来判断实例化哪个DbContext。
但问题是,ObjectContext在实例化的时候需要将EntityMapping添加到DbModelBuilder。怎么设计不同的ObjectContext添加不同的EntityMapping哪??
希望给出建议!