1

我必须做出一个主详细情形,即主我可以显示多种类型的项目,他们都实现IDto的DTO在WCF RIA服务的主从

interface IDto 
{ 
    int Id { get; set; } 
    string Title { get; set; } 
    EntityType { get; set; 
} 

enum EntityType 
{ 
    Contact, 
    Person, 
    Company, 
    Customer 
    Employee, 
    Vendor, 
    Job 
} 

注:我使用实体框架EDM(生成ObjectContextEntityObject s)。

的类层次结构是ContactPersonCompany子类,PersonEmployee的基类,CompanyVendor的基类。 Customer有一个属性Contact可以是ContactPerson,并有一个列表Job

enter image description here

现在在主列表,我想从DomainService(这是一个LinqToEntitiesDomainService<ObjectContext>,我想只有在IDto合同指定的字段被选中,然后选择时加载的DTO的集合,加载整个实体所有的字段/相关数据等在细节方面

更新:我想到了另一个想法
创建数据库视图(SQL2008),返回3行。以上IDto合同所在地枚举将被存储为int或tinyint(然后将枚举更改为字节),然后在edm中,我可以为存储在列表中的每个EntityType创建一个每个层次的表,并从DomainService中返回它。

顺便说一句,所有的枚举值将用于查询,事实上,任何单位将返回ContactEntityType属性,因为Contact是抽象的,可以是PersonCompany,但我还是希望有一个选项来查询他们两个。

更新2
客户还希望,在列表中的项目中的每一个,也是其所有作业。
根据上述层次结构,对于Customer - 选择所有作业;对于ContactPerson - 选择其CustomerJob s(如果它的一个Customer)。 VendorEmployee s不打算注册Job s。

我认为我能做到这一点的唯一方法是使用数据库视图。
我错了吗?后果是什么?我在RIA中使用SL5。

视图的方式很好吗?或者我应该使用客户端POCO处理客户端中的所有查询?因为这个值实际上只用于检索联系人名称及其作业。进一步的细节和操作将在他们自己的Entity实体的其他视图中完成。

那么你们专家怎么看?

回答

0

我发现this后非常有用,它实际上让我去desicion。

  1. 数据库的观点不一定是正确的做法
  2. 将从域的服务回报直通POCO DTO的部分实体。