2

一开始我不得不对我的英语说对不起。

我正在使用 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. 如何禁用一个公共属性的映射?

结果我想得到:当我尝试设置姓氏时,我在开头添加了前缀。

4

1 回答 1

2

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

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

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

或添加属性

[NotMapped]
private String Surname { get; set; }
于 2013-02-18T06:37:09.043 回答