如何启用映射实体的私有属性

时间:2013-02-18 06:19:53

标签: c# .net entity-framework

一开始我不得不为我的英语道歉。

我正在使用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时,我在开头添加前缀。

1 个答案:

答案 0 :(得分:2)

实体框架不提供映射私有属性的方法,因为它需要读取/写入值,因此它必须至少具有属性的公共get / set。

在回答第二个问题时,您可以使用模型构建器(我首选的描述映射的方式如下)

modelBuilder.Entity<User>().Ignore(u=>u.GetSurname);

或添加属性

[NotMapped]
private String Surname { get; set; }