【问题标题】:DTOs in WCF RIA Services Master-DetailWCF RIA Services Master-Detail 中的 DTO
【发布时间】:2011-08-24 12:42:09
【问题描述】:

我必须制作一个 Master-Detail 场景,在该场景中,我可以在 master 中显示多种类型的项目,它们都实现了IDto

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

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

注意:我正在使用实体框架 EDM(生成 ObjectContextEntityObjects)。

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

现在在主列表中,我想从DomainService(它是LinqToEntitiesDomainService<ObjectContext>,而且我只想选择IDto合同中的指定字段,然后选择,在详细信息区域中加载整个实体及其所有字段/相关数据等。

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

顺便说一句,所有枚举值都将用于查询,实际上,没有实体会为其EntityType 属性返回Contact,因为Contact 是抽象的,可以是Person 或@ 987654347@,但我仍然希望有一个查询它们的选项。

更新 2
对于列表中的每一项,客户还希望获得其所有工作。
基于我上面描述的层次结构,对于Customer - 选择它的所有工作;对于ContactPerson - 选择它的CustomerJobs(如果它是Customer)。 VendorEmployees 并不意味着在 Jobs 注册。

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

Views 好吗?或者我应该使用客户端 POCO 处理客户端中的所有查询?因为这个值实际上只用于检索联系人姓名及其工作。更多的细节和操作将在Entity 实体本身的其他视图中完成。

那么各位专家怎么看?

【问题讨论】:

    标签: silverlight entity-framework wcf-ria-services dto data-transfer-objects


    【解决方案1】:

    我发现this 的帖子非常有用,它实际上让我有了一个决定。

    1. 数据库视图不一定是正确的方法
    2. 将通过 POCO DTO 从域服务返回部分实体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2021-11-11
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      相关资源
      最近更新 更多