为模型MVC3 EF4添加新的虚拟属性

时间:2012-08-11 01:59:00

标签: asp.net-mvc-3 entity-framework entity-framework-4

我最近刚刚学会了将数据注释放在一个新的分部类中,以便它们能够持久保存来自数据库的edmx更新。
Database-first approach and modifying the database schema
Update Model From Database (Database First)

在我的一个模型中,我有两个属性:firstName和lastName。 我在下面创建了一个全名的虚拟财产。

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

当fullName属性在edmx生成的.tt模型类中时,它会起作用,但是当我把它放在我的“伙伴”部分类中时,它会保留我的注释,但它不起作用(即不被其余部分识别)应用程序作为我班级的属性)。

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

1 个答案:

答案 0 :(得分:1)

我明白了。随附的数据注释部分类有一个classMetaData类,您可以使用它来为您的部分类设置元数据(即您的注释在此处)。但是,aggregate属性必须包含在partial类中(不是Meta Data类)。

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

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; }
} 

}