ホームページ >データベース >mysql チュートリアル >手動キー入力で Entity Framework の自動生成キーを無効にする方法

手動キー入力で Entity Framework の自動生成キーを無効にする方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-15 18:57:44173ブラウズ

How to Disable Auto-Generated Keys in Entity Framework with Manual Key Input?

Entity Framework の自動生成キーを手動入力でオーバーライドする

Entity Framework で主キーを手動で管理すると、フレームワークの自動 ID 生成を抑制しようとすると問題が発生する可能性があります。このガイドでは、この一般的な問題に対処します。

HasDatabaseGeneratedOption(DatabaseGeneratedOption.None) を使用して EventID の自動生成を阻止しようとすると、問題が発生します。これは、SQL Server の IDENTITY_INSERT 設定と競合することがよくあります。

競合の解決:

この競合を解決するには、関連するテーブルに対して IDENTITY_INSERT を有効にします。これにより、ID 値を手動で挿入できるようになります。 これを DbContext コンストラクターに実装します:

<code class="language-csharp">using (var connection = Db.Database.Connection)
{
    var command = connection.CreateCommand();
    command.CommandText = "SET IDENTITY_INSERT Events ON";
    command.ExecuteNonQuery();
}</code>

属性ベースのキー構成:

あるいは、構成に属性を使用します。 次の属性を EventID プロパティに適用します:

<code class="language-csharp">[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int EventID { get; set; }</code>

このアプローチは、Entity Framework 6 と Entity Framework Core の両方で同様に機能します。

これらの変更を組み込むことで、主キーの自動生成を効果的に無効にし、イベント エンティティの値を手動で管理できます。

以上が手動キー入力で Entity Framework の自動生成キーを無効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。