none
Domain Service 不能共享实体类? RRS feed

  • 问题

  • 发现DomainService无法共享实体类,

    比如有OrderService和OrderDetailService,分别操作Order和OrderDetail实体没问题
    但是当我把Order实体的关联属性OrderDetails设置为[Include]后,试图在OrderService的Query方法里通过Include("OrderDetails")关连查询OrderDetail时,系统报错“The entity type 'OrderDetail' is exposed by multiple Domain Service types. Entity types cannot be shared across DomainServices” 。告诉我不能在DomainService间共享实体,难道非得把OrderService和OrderDetails合并成一个Service吗?

    由于数据库的所有表之间总是会有直接或间接的联系的,这样一来,要么整个项目里只创建一个DomainService(这不利于团队开发和代码维护),要么放弃使用Include(除了Include,有更好的实体联系方法吗?)

    望各位大虾指点,谢谢!

    2010年8月8日 15:51

答案

全部回复

  • 你好,

         DomainContext本身就是被设计为一个long live的类型...

         即使你不用include, wcf ria也会通过主外建关系 自动关联

        

    2010年8月10日 10:00
  • 参考这篇:

    Silverlight客户端和WCF服务器端共享类库

    http://www.silverlightchina.net/html/tips/2009/1203/276.html

    2010年8月10日 20:41
  • 不用Include的话,需要在客户端通过AddRefence引用另一个DomainContext中的实体,但是这样的一个问题是,对子表(OrderDetail)的查询处理比较复杂:比如Order中有1W条记录,OrderDetail里有10W条,当前操作根据条件从Order里查询出100条记录,此时OrderDetail怎么查?查询出全部显然不合适,根据那100个Order的主键OrderID去查的话,效率是不是会有问题?

    而Include方法生成的SQL语句则是使用多表连接或子查询,感觉效率上会高一点。

    2010年8月11日 1:02
  • 我的需求是在两个Domain Service间共享实体类,不是客户端和服务端之间共享类库,

    要在C-S间共享类,直接使用 shared就行了,不用这么麻烦的

    2010年8月11日 1:04
  • 暂时的解决方案:

    整个项目只定义一个DomainService,通过分部类的方式在多个cs文件中定义这个 service的不同部分。

    2010年8月11日 1:06
  • 两个domain service共享实体类貌似不能进行共享。

    2010年8月11日 15:33