Silverlight到RIA服务到Business Objects导致生成错误

时间:2009-11-06 19:41:36

标签: silverlight entity-framework wcf-ria-services

我已经完成了与Silverlight和Ria Services相关的基本教程,现在我正在尝试扩展到我之前使用过的模型。

我有一个Silverlight项目,我想使用Ria Services。与我见过的Ria Services教程不同,我希望让我的域服务在使用我的域实体(使用EF创建)的业务对象(DLL)项目中使用Repository对象。

以下是我正在使用的域名服务的示例摘录:

[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的属性。

如果我更改实体生成的代码以使用here所述的Contact.ContactID属性修饰System.ComponentModel.DataAnnotation.Key()属性,我的my <projectname>.g.cs文件中会出现另一个生成错误包含我的域名服务的项目。

  

命名空间'数据'的类型没有   存在于名称空间'系统'中(是吗?   缺少装配参考?)

由于<projectname>.g.cs文件是在构建时自动生成的,只是注释掉一行不起作用,我将System.Data作为项目引用。

我在这里做错了什么?我认为我能够使用这种模式来组织我的解决方案,但如果我想使用Ria服务,我是否必须改变一些事情?

2 个答案:

答案 0 :(得分:2)

确保从RIA服务文件夹(它的版本为99.0.0.0)引用System.ComponentModel.DataAnnotations dll。

答案 1 :(得分:0)

我发现的问题是我必须让我的Ria服务继承LinqToEntitiesDomainService而不仅仅是Domain Service,因为传递的类型是来自EF的实体。