2012-03-12 45 views
0

我想用EF 4.3代碼先創建一個乾淨的模型。我知道枚舉不支持,直到EF 5.0。實體框架代碼優先 - 我可以隱藏模型中的數據庫字段嗎?

爲了解決這個問題我一直在試圖做這樣的事情:

public class Vehicle { 
    public VehicleId int { get;set; } 
    public VehicleType VehicleType 
    { 
     get { return (VehicleType)VehicleTypeId; } 
    } 
    internal VehicleTypeId int { get; set; } 
} 

所以我希望存儲在數據庫中的vehicleTypeId但只顯示枚舉在模型

這是可能?

謝謝

+0

你試過了嗎? – 2012-03-12 10:32:58

+0

是的,它沒有工作。 vehicleTypeId沒有在數據庫中創建。 – Mantisimo 2012-03-12 10:49:37

+0

該屬性對您的上下文是否可見? – 2012-03-12 10:57:36

回答

0

如果您的屬性對上下文不可見,則不會被映射。您可以使用描述爲here的技巧使您的內部屬性可用於映射。

+0

謝謝,這是一個很好的小黑客,但它會通過一個額外的靜態方法重新暴露底層內部屬性。如果這是一個改進,每次我有一個枚舉來保持半/清理模型,並且它不會真正乾淨時,我必須這樣做。 – Mantisimo 2012-03-12 12:31:17

+0

除了使用'InternalsVisibleTo'並允許您的DAL程序集訪問實體程序集的內部屬性外,這是您可以首先使用EF代碼獲得的最乾淨的方法。 – 2012-03-12 13:06:12

相關問題