从数据库更新模型时,如何更新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