我正在使用Entity Framework 6.0.2使用Sql Server進行代碼優先。實體框架屬性隱藏
我有一個稱爲實體的基類,因爲我們不能擴展枚舉我需要重新定義另一個類稱爲公司的屬性類型,所以我使用新的關鍵字隱藏基本屬性並重新定義它。
public interface IEntity
{
Guid Id { get; set; }
State State { get; set; }
}
public abstract class Entity : IEntity
{
public Guid Id { get; set; }
public State State { get; set; }
}
public enum State
{
Inactive = 0,
Active = 1
}
public class Company : Entity
{
public new CompanyState State { get; set; }
public string SomeOtherProp { get; set; }
}
public enum CompanyState
{
Inactive = 0,
Active = 1,
Extra = 2
}
我得到的問題是,當實體框架試圖創建與此錯誤崩潰的DbContext:「有身份‘國家’已經存在的元數據集合中的參數名稱的項目:項目」
我有一個解決方法:我可以將Entity類中的狀態改爲int,並將適當的枚舉轉換爲int,但是我認爲我會失去枚舉所具有的類型安全/限制。
我想更改元數據信息以避免此錯誤,但我不知道如何。
爲什麼不加'Extra'的基本枚舉?隱藏財產本身似乎是一個壞主意,更不用說改變類型了。 –
因爲目標是隻有這2個選項,並有一種方法來擴展選項的商業意義。 – DanielAlmeida
@DStanley我從IEntity中刪除了狀態,但是您認爲重新定義屬性是個壞主意嗎?這不就是新關鍵字的重點嗎? – DanielAlmeida