Entity Framework を使用して MySQL の「ulong」プロパティを署名なし BigInt にマップする方法は?

Mary-Kate Olsen
リリース: 2024-11-03 04:09:02
オリジナル
1021 人が閲覧しました

How to Map `ulong` Properties to Unsigned BigInts in MySQL with Entity Framework?

Entity Framework の "uint" 型と "ulong" 型

Entity Framework では、long データ型を使用するクラス属性をマッピングできます。新しい移行を追加する場合 (コードファースト) は正しいですが、mysql の EF プロバイダーは ulong データ型をスキップします。プロパティを mysql の unsigned bigint にマッピングするにはどうすればよいですか?

更新 (2021 年 2 月)

どうやら EF Core は ulong をサポートするようになりました - 以下の @JimbobTheSailor の回答を参照してください。

古い Entity Framework バージョン:

Entity Framework は署名されていないデータ型をサポートしていないことがわかりました。 uint 列の場合、値はより大きな符号付きデータ型 (つまり、long) で格納できます。 ulong 列についてはどうですか?一般的な解決策は、オーバーフローせずに ulong を保持できる十分な大きさの EF でサポートされる署名付きデータ型がないため、私には機能しません。

しばらく考えた後、この問題に対する簡単な解決策を見つけました。サポートされている Long 型でデータを保存し、アクセス時に ulong に変換するだけです。 「待って、ulong の最大値 > long の最大値だ!」と思われるかもしれません。両方とも 8 であるため、ulong のバイトを long に格納し、必要に応じて ulong に再変換することができます。バイト。これにより、EF 経由で ulong 変数をデータベースに保存できるようになります。

<code class="csharp">// 避免直接修改以下内容。
// 仅用作数据库列。
public long __MyVariable { get; set; }

// 访问/修改此变量。
// 告诉 EF 不要将此字段映射到数据库表
[NotMapped]
public ulong MyVariable
{
    get
    {
        unchecked
        {
            return (ulong)__MyVariable;
        }
    }

    set
    {
        unchecked
        {
            __MyVariable = (long)value;
        }
    }
}</code>
ログイン後にコピー

変換がチェックされていない場合のオーバーフロー例外を防ぎます。

これがお役に立てば幸いです。

以上がEntity Framework を使用して MySQL の「ulong」プロパティを署名なし BigInt にマップする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート