我必须做一些非常错误的事情,因为这似乎是一个非常简单的扩展,在您尝试编译代码时会导致错误。
所以...我们有一个客户表,在该表中我们有一个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]添加到我们的分类中的每个项目......同样的错误。我试图[排除]它并得到同样的错误。
为什么看起来如此简单和直接的事情如此困难。请帮助我们弄清楚如何扩展实体分部类。你能用表中没有的数据吗?
由于
答案 0 :(得分:1)
诀窍是将您的类添加到Web项目的Models \ Shared文件夹中,并将您的类命名为Customer.shared.cs。
然后,您将删除新类中的所有using语句,并将“partial”关键字添加到新类中。例如:
命名空间XXXX.Web { 公共部分类客户 { 公共字符串FullName { 得到 { return FirstName +“”+ LastName; } } } }