代码之家  ›  专栏  ›  技术社区  ›  JamesEggers

Silverlight到RIA服务到业务对象会导致生成错误

  •  2
  • JamesEggers  · 技术社区  · 15 年前

    我已经学习了与Silverlight和RIA服务相关的基本教程,现在我正尝试扩展到以前使用过的模型。

    我有一个Silverlight项目,我想使用RIA服务。与我所看到的RIA服务教程不同,我希望让我的域服务在包含我的域实体(使用ef创建)的业务对象(dll)项目中使用存储库对象。

    下面是我正在使用的域服务的一个示例片段:

    [EnableClientAccess()]
    public class ContactService : DomainService
    {
        public List<Contact> ContactSearch(string lastName)
        {
            ContactRepository rep = new ContactRepository();
            return rep.SearchByLastName(lastName);
        }
    }
    

    联系人和联系人存储库位于我的Business Objects项目中。ContactRepository查询联系人实体的EF。

    当我构建时,我得到以下错误:

    实体 'silverlightcrm.businessobjects.contact' 没有定义键。实体 由域服务操作公开 必须至少有一个 用keyAttribute标记的属性。

    如果我更改实体生成的代码来修饰 Contact.ContactID 属性 System.ComponentModel.DataAnnotation.Key() 描述的属性 here ,我的 <projectname>.g.cs 包含我的域服务的项目文件。

    命名空间“data”的类型不 存在于命名空间“system”中(是否 缺少程序集引用?)

    自从 <项目名称>.g.cs 文件是在构建时自动生成的,仅仅注释一行是行不通的,我有System.Data作为项目引用。

    我在这里做错什么了?我想我可以使用这个模型来组织我的解决方案的各个方面,但是如果我想使用RIA服务,我需要改变吗?

    2 回复  |  直到 9 年前
        1
  •  2
  •   Bryant    15 年前

    确保您引用的是RIA服务文件夹中的system.componentmodel.dataannotations dll(它的版本为99.0.0.0)。

        2
  •  0
  •   JamesEggers    15 年前

    我发现的问题是,我必须让RIA服务从LinqToEntitiesDomaInService继承,而不仅仅是域服务,因为传递的类型是来自EF的实体。