日期:2014-05-20  浏览次数:20847 次

多实体组合问题
先决条件: 有ORM对单个实体持久化基类。

打比方先: 我们研发部门,依据经验总结,创建了   合同实体A,  合同物资实体B,这两个对象。 两者是父子关系。
按我以前做法,就是在 A 中,放置个  List 泛型容器, 把B 塞入进来,统一的做保存,就了事了。

但,现在领导发话了:  
   1: 我们研发中心提供的 A 和 B,都是毛坯。 很可能属性不够用。  换言之,A 和 B 都可能会被业务部门继承,甚至,业务部门还会独立创建C。

  2: A 里面,放置 List 容器,就敲定了A 和 B 的关系,而这个关系是不牢靠的。应交由业务部门自己敲定去。

  3: 也许,合同中,不仅需要A ,以及他儿子B ,甚至还需要新儿子C 和 同事D .
亦即 不同地方,合同所容纳的信息是千变万化的。  在A 实体中,绝对不能有任何其他实体的痕迹(外键也许可以网开一面)。

问题摆面上了,目前我的想法,就是再开辟个容器的概念。
比如: 一号客户,需要A ,B ,C 则
class PactForm:BaseForm
{
    public A {get;set;}
    public IList<B>;
   public IList <C>;
}

二号客户,需要A,B,C,D,则
class PactForm:BaseForm
{
    public A {get;set;}
    public IList<B>;
   public IList <C>;
   public D {get;set;}
}

云云。。。。。。。。。。。。。。。。。。。。。。。。。。。。
PactForm 由图形化界面生成

则,每次增删改,直接对 Save( PactForm). 
Save 时,反射遍历其内容,再逐个保存。

不知道这个解决方案,是否可行?

或者还有什么更好的方案么?
------解决方案--------------------
采用集合加弱类型设计