【问题标题】:Silverlight to RIA Service to Business Objects Causes Build ErrorsSilverlight 到 RIA 服务到业务对象导致生成错误
【发布时间】: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 所述,我在包含我的域服务的项目的&lt;projectname&gt;.g.cs 文件中出现另一个构建错误。

命名空间“数据”的类型不 存在于命名空间“系统”中(你是 缺少程序集引用?)

由于&lt;projectname&gt;.g.cs 文件是在构建时自动生成的,因此仅注释掉一行是行不通的,我将 System.Data 作为项目参考。

我在这里做错了什么?我认为我可以使用这种组织解决方案各个方面的模型,但是如果我想使用 Ria 服务,我是否必须进行更改?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 之后,我现在可以分别构建这两个项目;但是,如果我构建完整的解决方案,我仍然会得到错误。想法? (除了单独构建:-))
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      相关资源
      最近更新 更多