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 サイトの他の関連記事を参照してください。