1

私はこのようなモデルを持っています:

namespace Ad.NegCred.Data.Model {
    public enum DataKind {
        F, //Takibe alınıp henüz tahsil edilmeyen ferdi kredi bildirimi
        FA, //Aynı dönemde takibe alınan ve tahsil edilen ferdi kredi bildirimi
        FF, //daha önceki dönemlerde takibe alındığı bildirilmiş ferdi kredi tahsil bildirimi
        K, //Takibe alınıp henüz tahsil edilmeyan kredi kartı
        KA, //Aynı dönemde takibe alınan ve tahsil edilen kredi kartı
        KF //Daha önceki dönemlerde takibe alındığı bildirilmiş kredi kartı tahsil    bildirimi
    }

    public class Datum {
        [Key]
        public long Id { get; set; }
        public DataKind Kind { get; set; }
        [StringLength(25, MinimumLength = 2)]
        public string Name { get; set; }
    }
}

データベースがEFによって作成されると、列以外のすべての列Kindが作成されます。ここに示されていない複合型の一部である別の列挙列も作成されません。

EF 5 がこのように動作するのはなぜですか? 私が知らない設定はありますか?

4

4 に答える 4

7

EF5 とターゲット .NET Framework 4 を使用しているようです。EntityFrameork.dll で使用される .NET Framework 4 の System.Data.Entity.dll は列挙型を処理できないため、これは機能しません。EF5 と .NET Framework 4.5 に移行するか、.NET Framework 4 をターゲットにして列挙型を使用できる EF6 に移行する必要があります。これは、EF6 が .NET Framework に同梱されているコンポーネントに依存しなくなったためです。

于 2013-02-04T18:31:42.927 に答える
0

EFによってテーブルが作成されることはなく、それは仕様によるものです。EFは列挙型を内部で処理します。あなたはそれらについて心配する必要はありません。私は列挙型を使用しましたが、正常に動作します。ただし、列挙型をデータベースに明示的に格納する場合は、独自のコードでローリングを作成することをお勧めします。ただし、エンティティの作成には、列挙型にも関連付けられた通常のセレモニーがあることに注意してください。

リンクhttp://msdn.microsoft.com/en-us/data/hh859576.aspxにアクセスすると、Efは列挙型のテーブルを作成しないことが明確に記述されています。

于 2013-02-01T16:41:52.450 に答える
0

正常に動作するはずです。MSEFサイト http://msdn.microsoft.com/en-us/data/hh859576を参照してください。

私はこれを使用し、それは機能します...そして列挙型はDB上にTABLEとして作成されません。ビデオは、必要に応じてDB上にENUMを作成する方法を示しています。

namespace XYZ.Core.Enum
{
public enum MasterEventType : int
{
    Undefined = 0,  
    Logon = 1,
    Logoff = 2,   
 }
}

namespace XYZ.Core.Model
{
public class MasterUserEventLog  
{
    // the rest is not relevant here....
    public MasterEventType EventType{ get; set; }       // what happened
}
{
于 2013-02-01T16:12:41.393 に答える
0

EF 6 では、列挙型をデフォルトの int ではなく uint から派生させた場合にも、この動作が発生することがわかります。例えば

public enum LogStatus : uint

上記は、コードの最初の移行で列を自動的に生成しないため、uint 部分を削除する必要があります。

public enum LogStatus

デフォルトはintベースで、コードファーストは、この列を自動的に作成します。

于 2016-04-23T10:23:53.707 に答える