从数据库更新模型时,如何更新DomainService而无需重新创建新的DomainService文件?

从数据库更新模型时,如何更新DomainService而无需重新创建新的DomainService文件?

问题描述:

我向数据库添加了两个新表:EmailCampaign和EmailTemplate。 我使用数据库更新模型更新了EDMX。 EDMX位于RIA Services类库中。从数据库更新模型时,如何更新DomainService而无需重新创建新的DomainService文件?

现在从客户端(一个silverlight库)我看不到新创建的实体只有旧的。 我检查了EF Designer.cs生成的代码,新实体在那里,我无法从客户端访问它们。

我试着删除并读取EDMX,但没有奏效。

更新 我想通过域服务暴露实体。我重新创建了域服务,并且一切正常。但问题变成每当我在数据库中有新表格时,如何重新生成域服务而不生成新的域服务.cs文件,并将我的旧代码复制到新生成的并复制出现的所有错误(每次相同)。所以这是一个负担。有没有一些工具或一些框架?

部分班是你的朋友!我将域服务类拆分为更小的类,将我经常使用的实体分组 - 这与我的客户端模型类并行。所以,我的主域服务类看起来像这样...

[EnableClientAccess()] 
    public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities> 
    { 
    } 

然后每个文件都包含这样的:

 public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities> 
     { 
     public IQueryAble<Address> GetAddresses() 
     { 
      return this.ObjectContext.Addressess; 
     } 
     ....more code 

     } 

这样的话,如果我改变一个表,我只需要重新创建域为所选表格提供服务。

这意味着当我创建“新”表时,我只是使用一些虚构名称,创建文件,然后替换“公共局部类”行。好友文件根本不需要改变。只要小心你的名字空间!

HTH, Richard