如果从数据库更新模型,如何在不重新创建新的DomainService文件的情况下更新DomainService?

时间:2011-12-20 19:52:07

标签: entity-framework wcf-ria-services

我在数据库中添加了两个新表:EmailCampaign和EmailTemplate。 我使用Update Model From Database更新了EDMX。 EDMX位于RIA Services类库中。

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

我尝试删除并阅读EDMX,但它没有用。

UPDATE 我发现实体是通过域服务公开的。我重新创建了域服务,一切正常。但问题是每次我在数据库中有新表时如何重新生成域服务而不生成新的域服务.cs文件并将我的旧代码复制粘贴到新生成的并解决出现的所有错误(每次相同)。所以这是一种负担。是否有一些工具或一些框架?

1 个答案:

答案 0 :(得分:0)

部分课程是你的朋友!我将我的域服务类分成了较小的,将我经常使用的实体分组 - 这与我的客户端Model类相似。所以我的主域服务类看起来像这样......

  [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, 理查德