sql >> データベース >  >> RDS >> Mysql

unsigned int / long型をEntityFrameworkで使用するにはどうすればよいですか?

    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 オーバーフロー例外を防ぐため。

    これが誰かに役立つことを願っています。



    1. 文字列をエスケープするとはどういう意味ですか?

    2. SQL ServerのSelectステートメントで並べ替え(並べ替え)を使用する方法-SQL Server/TSQLチュートリアルパート109

    3. postgresで間隔を時間数に変換するにはどうすればよいですか?

    4. SQLで数値列の最大値を見つける方法