2013-02-18 76 views
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.如何禁用一個公共屬性的映射?

因此我想得到: 當我嘗試設置姓氏時,我在開始時添加了前綴。

回答

2

實體框架沒有提供映射私有屬性的方法,因爲它需要向它們讀取/寫入值,所以它必須至少有一個公共的get/set屬性。

在回答你的第二個問題,你可以使用模型構建器(我的首選,說明您的映射如下的方式)

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

或添加屬性

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

THX的答案。但是第一個問題呢?如何映射私有財產? – Maris 2013-02-18 06:42:38

+0

@maris,不幸的是你不能屬性必須是公開的,並有一個get/set爲什麼你要映射一個私人的 – 2013-02-18 06:43:37

+0

我想添加一個先進的邏輯(獲取和設置)到我的財產。就像我想插入到數據庫不是整個數據,而是整個數據+前綴。 – Maris 2013-02-18 06:47:11