【问题标题】:ef when update model from database, how to update DomainService without recreating a new DomainService file?ef 从数据库更新模型时,如何在不重新创建新的 DomainService 文件的情况下更新 DomainService?
【发布时间】:2011-12-22 00:17:18
【问题描述】:
我向数据库中添加了两个新表:EmailCampaign 和 EmailTemplate。
我使用从数据库更新模型更新了 EDMX。
EDMX 位于 RIA 服务类库中。
现在从客户端(silverlight 库)我看不到新创建的实体,只能看到旧实体。
我检查了 EF Designer.cs 生成的代码,新实体在那里,我只是无法从客户端访问它们。
我尝试删除和读取 EDMX,但没有成功。
更新
我发现实体是通过域服务暴露的。我重新创建了域服务,一切正常。但是每次我在数据库中有新表时问题就变成了如何重新生成域服务而不生成新的域服务 .cs 文件并将我的旧代码复制粘贴到新生成的文件中并解决出现的所有错误(每次相同的)。所以这是一个负担。是否有一些工具或一些框架?
【问题讨论】:
标签:
entity-framework
wcf-ria-services
【解决方案1】:
部分课程是您的朋友!我将我的域服务类分解为更小的类,将我经常一起使用的实体分组——这与我的客户端模型类并行。所以我的主要域服务类看起来像这样......
[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,
理查德