2013-09-26 69 views
3

美好的一天!首先在EF數據庫中自定義屬性

我已經使用數據庫第一aproach, 從數據庫創建了一個EF模型,並且爲EF生成的實體類添加了幾個只讀屬性,這些屬性不在數據庫中。 每當我更新我的模型添加新表的數據 我鬆散創建的屬性,所以我必須重新創建它們。

如數據庫一個例子,我有屬性isFemale,但在我的課我創建

public string Gender 
{ 
    get 
    { 
      if(isFemale) return "female"; 
      else return "male"; 
    } 
} 

我的問題是有沒有辦法從更新數據庫模型,讓由我生成的屬性?

謝謝!

+0

的[延伸實體框架模式,包括新的屬性]可能重複(http://stackoverflow.com/questions/6099456/extending-entity-framework-model-to-include-new-property) –

回答

4

在另一個部分類而不是生成的類上添加屬性。例如,如果您生成的類是Person類型,定義另一部分類在同一個項目,同一個命名空間:

public partial class Person 
{ 
    public string Gender 
    { 
     get 
     { 
      if(isFemale) return "female"; 
      else return "male"; 
     } 
    } 
} 
+0

喜理查德謝謝你的回答!我想進一步覆蓋由EF創建的屬性。那可能嗎?作爲一個例子,我在數據庫中有字符串BankAccount字段,並在接受空值的實體類中生成結果。我想覆蓋它,如果值爲null,則返回空字符串。 public string BankAccount {get {if(_BankAccount == null)return「」;否則返回_BankAccount}}。親切的問候! –

+1

你不能以這種方式重寫屬性。您需要使用像您一樣的單獨屬性,或者使用函數或擴展方法。 – Richard

4

使用部分類將解決你的問題,但:

  • 所有部分類的部分必須在同一個程序集中定義
  • 部分零件的屬性不會持久保存到數據庫中
  • 您的部分零件的屬性不能用於linq-to-實體 查詢

read more

2

你可以讓你的類部分,並在兩個文件單獨它,這是我與DatabaseFirst使用它的方式。

public partial class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

public partial class Person 
{ 
    public string FullName { 
     get 
     { 
      return FirstName + " " + LastName; 
     } 
    } 
} 
+0

哎呦沒有看到理查茲回答 – Staeff

+0

這一個幫助更多,因爲它可以看出,你可以創建和重複所有你需要的類。謝謝。 – elcool