一开始我不得不为我的英语道歉。
我正在使用EntityFramework和代码优先方式。我头脑中有一个想法,但我不知道如何让它变得真实。我不是编程的初学者,但我总是使用流利的NHibernate。
我有一个实体:
public class User
{
[Key]
public Int32 Id { get; set; }
public String Name { get; set; }
// This property should be mapped on DB
private String Surname { get; set; }
// This one shouldn't be mapped
public String GetSurname { get { return Surname; } set { Surname = "SomePrefix." + value; } }
}
问题1.如何映射实体的私有财产?
我无法在上下文中的OnModelCreating()的ovverride中访问此私有属性。
问题2.如何禁用一个公共财产的映射?
结果我想得到: 当我尝试设置Surname时,我在开头添加前缀。
答案 0 :(得分:2)
实体框架不提供映射私有属性的方法,因为它需要读取/写入值,因此它必须至少具有属性的公共get / set。
在回答第二个问题时,您可以使用模型构建器(我首选的描述映射的方式如下)
modelBuilder.Entity<User>().Ignore(u=>u.GetSurname);
或添加属性
[NotMapped]
private String Surname { get; set; }