2012-09-02 71 views
0

我生成了一個新的遷移,但由於某種原因,它會刪除我使用的所有枚舉,並且不會在數據庫模式中爲其添加任何支持。雖然在代碼優先EF 5.0遷移刪除枚舉

的定義,這些都是我的枚舉:

using System; 
namespace StockManagement.Enums 
{ 
    public enum InventoryMethod 
    { 
     FIFO = 0, 
     LIFO = 1, 
     WEIGHTED_AVERAGE = 2 
    } 

    public enum TransactionDirection 
    { 
     BUY = 0, 
     SELL = 1 
    } 
} 

這是我的2相關的類:

public class User 
{ 
    [Key] 
    public int UserID { get; set; } 
    public string UserName { get; set; } 
    public string Email { get; set; } 
    public string Password { get; set; } 
    /// <summary> 
    /// FIFO = First In First Out 
    /// LIFO = Last In First Out 
    /// AVG = Average 
    /// </summary> 
    public InventoryMethod InventoryMethod { get; set; } 
    public virtual ICollection<Article> Articles { get; set; } 
} 

public class ArticleTransaction 
{ 
    [Key] 
    public int ArticleTransactionID { get; set; } 
    public DateTime TransactionDate { get; set; } 
    /// <summary> 
    /// Buy = Buying goods from suppliers 
    /// Sell = Selling goods to customers 
    /// </summary> 
    public TransactionDirection BuyOrSell { get; set; } 
    public int Number { get; set; } 
    public double PriceExclusive { get; set; } 
    public virtual Article Article { get; set; } 
} 

這是我產生遷移:

using System.ComponentModel.DataAnnotations; 
using System; 
using StockManagement.Enums; 
public class ArticleTransaction 
{ 
    [Key] 
    public int ArticleTransactionID { get; set; } 


    public DateTime TransactionDate { get; set; } 
    /// <summary> 
    /// Buy = Buying goods from suppliers 
    /// Sell = Selling goods to customers 
    /// </summary> 
    public TransactionDirection BuyOrSell { get; set; } 
    public int Number { get; set; } 
    public double PriceExclusive { get; set; } 

    public virtual Article Article { get; set; } 

} 

我有EF 5.0,這最近沒有變化:) 任何人都有一個想法,爲什麼th是突然發生,如何解決這個問題?

+0

您生成的遷移是怎樣的?你使用的是什麼版本的.NET? –

+0

等一下,EF5做/做到了嗎?我以爲我讀過的地方是,對枚舉的數據庫級支持不是內置的,它只處理數字字段作爲它們的後備存儲。 –

回答

1

大多數數據庫沒有枚舉的概念。這反映在EF中,枚舉屬性由相應枚舉類型的基礎類型列支持。例如,因爲InventoryMethod類型的基礎枚舉類型是System.Int32/int(如果未指定特定的基礎類型,則這是默認的基礎類型)此類型的所有屬性都將由int類型的列支持(int在C#映射中EDM中的Edm.Int32,然後映射到數據庫中的int(我在這裏談論的是Sql Server))。

+0

該死,你說得對。它支持VS 2012和.Net 4.5,而不是4.0 :( – NicoJuicy

+0

是的,EF6(https://github.com/moozzyk/VintageStudio/commit/2c6d53f835de31ff73f2b4d204aa00870b910a24)應該爲.NET Fx 4世界帶來枚舉。 – Pawel