我已经完成了与 Silverlight 和 Ria 服务相关的基本教程,现在我正在尝试扩展我以前使用过的模型。
我有一个想使用 Ria Services 的 Silverlight 项目。与我见过的 Ria 服务教程不同,我希望让我的域服务在包含我的域实体(使用 EF 创建)的业务对象 (DLL) 项目中使用存储库对象。
这是我正在使用的域服务的示例片段:
[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 标记的属性。
如果我更改实体生成的代码以Contact.ContactID
使用此处System.ComponentModel.DataAnnotation.Key()
所述的属性装饰属性,我会在包含域服务的项目文件中出现另一个构建错误。<projectname>.g.cs
命名空间“系统”中不存在命名空间“数据”的类型(您是否缺少程序集引用?)
由于该<projectname>.g.cs
文件是在构建时自动生成的,因此仅注释掉一行是行不通的,我将 System.Data 作为项目参考。
我在这里做错了什么?我认为我可以使用这种组织解决方案方面的模型,但是如果我想使用 Ria 服务,我是否必须进行更改?