【发布时间】:2009-11-06 19:41:36
【问题描述】:
我已经完成了与 Silverlight 和 Ria 服务相关的基本教程,现在我正在尝试扩展我以前使用过的模型。
我有一个希望使用 Ria 服务的 Silverlight 项目。与我看到的 Ria 服务教程不同,我希望我的域服务在包含我的域实体(使用 EF 创建)的业务对象 (DLL) 项目中使用存储库对象。
这是我正在使用的域服务的示例 sn-p:
[EnableClientAccess()]
public class ContactService : DomainService
{
public List<Contact> ContactSearch(string lastName)
{
ContactRepository rep = new ContactRepository();
return rep.SearchByLastName(lastName);
}
}
Contact 和 ContactRepository 在我的 Business Objects 项目中。 ContactRepository 向 EF 查询联系人实体。
当我构建时,我收到以下错误:
实体 'SilverlightCRM.BusinessObjects.Contact' 没有定义键。实体 由 DomainService 操作公开 必须有 必须至少有一个 用 KeyAttribute 标记的属性。
如果我更改实体生成的代码以使用System.ComponentModel.DataAnnotation.Key() 属性来装饰Contact.ContactID 属性,如here 所述,我在包含我的域服务的项目的<projectname>.g.cs 文件中出现另一个构建错误。
命名空间“数据”的类型不 存在于命名空间“系统”中(你是 缺少程序集引用?)
由于<projectname>.g.cs 文件是在构建时自动生成的,因此仅注释掉一行是行不通的,我将 System.Data 作为项目参考。
我在这里做错了什么?我认为我可以使用这种组织解决方案各个方面的模型,但是如果我想使用 Ria 服务,我是否必须进行更改?
【问题讨论】:
标签: silverlight entity-framework wcf-ria-services