【发布时间】:2011-06-03 15:46:21
【问题描述】:
我有一个使用 EntityFramework 作为数据层的 Silverlight 4 应用程序。
有两个实体:客户和产品。当我从数据库中获取客户时,也会读取相关产品,因为我在客户的元数据中添加了相关的“包含”属性并在获取查询中调用 Include 方法:
public IQueryable<customer> GetCustomerSetById(int customerId)
{
return this.ObjectContext.CustomerSet
.Include(o => o.Products)
.Where(o => o.Id = customerId);
}
当我更改客户产品中的任何属性时出现此异常的问题:
这个类型的EntitySet 'MyApp.Web.Models.Product' 没有 支持“编辑”操作。
但如果我直接阅读客户产品,一切都会奏效,例如不是通过客户实体 (CustomerContext) ,而是通过产品一 (ProductContext)。
产品实体中还有 IsReadOnly=true 属性。
更新:
我拥有所有 CUD 操作,并且还用相关的插入、更新和删除属性标记了所有这些操作。否则它根本不起作用,但它在某些情况下对我有用,就像我上面写的那样。
有什么想法吗?
【问题讨论】:
-
啊 - 错过了它在某些情况下工作的那一点。
-
这是 RIA+EF 的真正问题,因此我们将所有实体保存在一个域服务中,因为在客户端很难处理通过导航属性相关的多个实体。想一想实际上并没有什么区别,我们使用 EF T4 模板在一个类中生成所有域服务操作。并且我们生成了部分方法来拦截领域服务方法的逻辑。
-
@Akash Kava:看起来您对 RIA 和多个域服务文件的看法是正确的。如果我为所有实体创建一个域服务 - 它可以工作。因此,请发表您的评论作为答案-我会接受。谢谢。
标签: silverlight entity-framework ria