使用部分类扩展实体类....不支持的类型错误

时间:2011-08-24 18:39:35

标签: silverlight-4.0

我必须做一些非常错误的事情,因为这似乎是一个非常简单的扩展,在您尝试编译代码时会导致错误。

所以...我们有一个客户表,在该表中我们有一个Customer_ID。我们只存储客户ID,其余数据来自客户真相中心。

在我们生成实体EDMX文件时,引用此Customer表并创建实体Customer对象。

我们获取此客户ID并从我们的客户真实中心的WCF服务中获取剩余的客户信息。这将返回姓名,年龄等。

所以...我们希望使用这些附加属性扩展现有的Customer实体,但是我们在客户数据库中“保留”了这些属性。

因此,我们创建了一个部分类来扩展我们的实体客户,如下所示:

namespace UsingRIAServices.Web.Models
{
    public partial class Customer
    {

        public string Name { get; set;}
        public int Age { get; set;}
    }
}

这没有用,当你构建时会出现以下错误。

实体“UsingRIAServices.Web.Models.Customer”具有支持类型的属性“CustomerReference”。

所以...如果你进入Customer.Designer.cs,你就会看到这个有利的

/// <summary>
    /// No Metadata Documentation available.
    /// </summary>
    [BrowsableAttribute(false)]
    [DataMemberAttribute()]
    public EntityReference<Customer> CustomerReference
    {
          blah, blah
    }

请注意EntityReference中的Customer类型,它现在是我们部分的扩展类。

所以...我将[Datamember]添加到我们的分类中的每个项目......同样的错误。我试图[排除]它并得到同样的错误。

为什么看起来如此简单和直接的事情如此困难。请帮助我们弄清楚如何扩展实体分部类。你能用表中没有的数据吗?

由于

1 个答案:

答案 0 :(得分:1)

诀窍是将您的类添加到Web项目的Models \ Shared文件夹中,并将您的类命名为Customer.shared.cs。

然后,您将删除新类中的所有using语句,并将“partial”关键字添加到新类中。例如:

命名空间XXXX.Web {     公共部分类客户     {         公共字符串FullName         {             得到             {                 return FirstName +“”+ LastName;             }         }     } }