2

EntityFramework を使用しており、C# でバイトに生成される tinyint である LinkStatusID 列があります。

public enum LinkStatus
{
    Added = 0,
    Deleted = 1
}

ただし、これにより次が得られます。

a.LinkStatusID = (byte)Enums.LinkStatus.Deleted;

これを構造化するよりエレガントな方法はありますか?

LastCoderのEDIT2:

public enum LinkStatus : byte
{
    Added = 0,
    Deleted = 1
}

    var blah = Enums.LinkStatus.Added;
    var ty = blah.GetType();

    var blah2 = (byte)Enums.LinkStatus.Added;
    var ty2 = blah2.GetType();

これは(予想どおり)機能しませんが、ここでの最初の回答で理由が説明されています。

EDIT3: EF は、この sln が DB にアクセスする唯一の方法ではないため、コード内で列挙型を明示的に保持することに熱心です。EF5列挙型の提案に感謝します!

4

2 に答える 2

2
public enum LinkStatus : byte

明示的なキャストを回避します。

于 2012-12-17T15:17:49.883 に答える
0

上記の SLaks (チュートリアルはこちら) のように、おそらくネイティブの enum サポートを使用する必要があります。それをしたくない場合は、EF がサポートする前に私が見つけた別のことを行うことができます。

public int CountryInt{get;set;}
public Countries Country
        {
            get { return (Countries) this.CountryInt; }
            set { this.CountryInt = (int) value; }
        }

これを使用すると、Country 変数を設定するだけで、正しい int 値として DB に自動的に移動することができます。

于 2012-12-17T15:19:42.730 に答える