1

我最近刚刚了解到将您的数据注释放在一个新的部分类中,以便它们在数据库中的 edmx 更新上持续存在。
数据库优先方法和修改数据库模式
从数据库更新模型(数据库优先)

在我的一个模型中,我有两个属性:名字和姓氏。我为下面的全名创建了一个虚拟属性。

public virtual string fullName { get {return firstName + " " + lastName; } }

fullName 属性在 edmx 生成的 .tt 模型类中时有效,但是当我将其放入包含注释的“伙伴”部分类中时,它不起作用(即应用程序的其余部分无法识别为我班级的一个属性)。

如何获得不会被 edmx 的数据库更新覆盖的聚合虚拟属性,如上面的 fullName 属性?

4

1 回答 1

1

我想到了。随附的数据注释分部类有一个 classMetaData 类,您可以使用它为分部类设置元数据(即您的注释放在这里)。但是,聚合属性必须进入部分类(而不是元数据类)。

所以第二个部分类代码应该是这样的:

namespace MyProject.Models
{
[MetadataType(typeof(PersonMetaData))]
public partial class Person
{
    //this is where you put new aggregate properties
    public virtual string fullName { get { return firstName + " " + lastName; } }
}

public class PersonMetaData
{
    //this is where you put data annotations
    [Required]
    public string firstName { get; set; }
    [Required]
    public string lastName { get; set; }
} 

}
于 2012-08-11T20:06:44.700 回答