【问题标题】:EF 5.0 migration drops enumsEF 5.0 迁移丢弃枚举
【发布时间】:2012-09-02 16:24:07
【问题描述】:

我生成了一个新的迁移,但由于某种原因,它删除了我正在使用的所有枚举,并且没有在 db 架构中添加对它的任何支持。虽然它是在 Code-First 中定义的

这些是我的枚举:

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,这最近没有改变 :) 任何人都知道为什么会突然发生这种情况以及如何解决这个问题?

【问题讨论】:

  • 您生成的迁移看起来如何?您使用的是哪个版本的 .NET?
  • 等等,EF5 做到了/做到了?我想我在某处读到没有内置对枚举的 db 级支持,它只处理数字字段作为它们的后备存储。

标签: c# entity-framework ef-code-first migration entity-framework-migrations


【解决方案1】:

大多数数据库没有枚举的概念。这反映在 EF 中,其中枚举属性由相应枚举类型的基础类型列支持。例如,因为 InventoryMethod 类型的基础枚举类型是 System.Int32/int(如果未指定特定基础类型,则这是默认基础类型)此类型的所有属性都将由 int 类型的列支持(C# 映射中的 int到 EDM 中的 Edm.Int32 ,后者又映射到数据库中的 int (我在这里谈论的是 Sql Server))。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2014-10-04
  • 2022-10-30
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多