2

我正在使用 EntityFramework 并有一个 LinkStatusID 列,它是一个 tinyint,它在 C# 中生成为一个字节。

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 进入数据库的唯一方式,所以我很想在代码中保持 Enums 明确。感谢 EF5 枚举建议!

4

2 回答 2

2
public enum LinkStatus : byte

将避免显式转换。

于 2012-12-17T15:17:49.883 回答
0

您可能应该使用本机枚举支持,例如上面提到的 SLaks(Tutorial is here)。如果你不想这样做,你可以做一些我在 EF 支持之前找到的东西:

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

然后,使用它可以让您只设置 Country 变量,并让它作为正确的 int 值自动进入数据库。

于 2012-12-17T15:19:42.730 回答