2011-08-24 68 views
0

我必须做一些非常错误的事情,因为这似乎是一个非常简单的扩展,当您尝试编译代码时会导致错误。使用部分类扩展实体类....不受支持的类型错误

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

当我们生成我们的实体EDMX文件时,此Customer表被引用并创建一个Entity Customer对象。

我们带着这个客户ID,并从我们的客户真相中心的WCF服务中获取客户信息的其余部分。这会返回名称,年龄等。

因此......我们想用这些附加属性扩展现有的客户实体,但是我们在客户数据库中“坚持”这些属性。

因此,我们创建了一个局部类来扩展我们的实体的客户是这样的:

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类型的客户是现在我们的部分扩展分类。......我加[数据成员]每个项目在我们的部分类...同样的错误。我试着到[排除]它并得到相同的错误。

为什么看起来这么简单直接如此困难。请帮助我们弄清楚如何扩展实体部分类。你可以用不在表格中的数据来做到这一点吗?

感谢

回答

1

技巧是你的类添加到模型\共享Web项目的文件夹并命名类Customer.shared.cs。

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

命名空间XXXX.Web { 公共部分类客户 { 公共字符串全名 { 得到 { 回报姓+ “” +姓氏; } } } }