我最近刚刚学会了将数据注释放在一个新的分部类中,以便它们能够持久保存来自数据库的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的数据库更新覆盖?
答案 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; }
}
}