2021年2月の更新
どうやらEFCoreはulong
をサポートするようになりました -以下の@JimbobTheSailorの回答を参照してください。
古いEntityFrameworkバージョン:
EntityFrameworkはunsigned
をサポートしていないことが判明しました データ型。 uint
の場合 列の場合、より広い範囲(つまり、long
)の符号付きデータ型に値を格納するだけで済みます。 )。 ulong
はどうですか 列? ulong
を保持できるEFでサポートされている署名付きデータ型がないため、一般的なソリューションは機能しませんでした。 オーバーフローすることなく。
少し考えた後、この問題の簡単な解決策を見つけました。サポートされているlong
にデータを保存するだけです。 入力してulong
にキャストします アクセスしたとき。あなたは考えているかもしれません:「しかし、待ってください、ulongの最大値> longの最大値!」 ulongのバイトをlongに格納し、必要なときにulongにキャストして戻すことができます。どちらも8バイトであるためです。これにより、EFを介してulong変数をデータベースに保存できます。
// Avoid modifying the following directly.
// Used as a database column only.
public long __MyVariable { get; set; }
// Access/modify this variable instead.
// Tell EF not to map this field to a Db table
[NotMapped]
public ulong MyVariable
{
get
{
unchecked
{
return (ulong)__MyVariable;
}
}
set
{
unchecked
{
__MyVariable = (long)value;
}
}
}
キャストはunchecked
オーバーフロー例外を防ぐため。
これが誰かに役立つことを願っています。