0

Keyword_Id = 1 のすべてのレコードを Keyword_Id = 2 に更新するにはどうすればよいですか?

public class KeywordAddressCategory
{
    [Key]
    [Column("Keyword_Id", Order = 0)]
    public int Keyword_Id { get; set; }

    [Key]
    [Column("Address_Id", Order = 1)]
    public int Address_Id { get; set; }

    [Key]
    [Column("Category_Id", Order = 2)]
    public int Category_Id { get; set; }
}

エンティティのキ​​ーを更新できないという例外が発生します。

ありがとう

4

1 に答える 1

0

これはおそらく、これら 3 つのプロパティがすべて複合主キーの一部であり、Entity Framework が簡潔に指摘しているように、主キーの値を変更できないためです。

これがまったくオプションである場合は、複合主キーではなく、このクラスに別の主キーを使用することを検討します。外部キーの使用がはるかに簡単になることがわかります。

したがって、次のようなものです。

[Key]
public int KeywordAddressCategoryId { get; set; }

public int Keyword_Id { get; set; }

public int Address_Id { get; set; }

public int Category_Id { get; set; }

このシステム ID 制約、外部キー、ID 値をルート値またはフォームの非表示フィールドとして渡すことにより、すべてがはるかに簡単になります。あなたの質問については、外部キーの値を簡単に変更できるため、Keyword_Id の値を簡単に変更できます。

実際に値を変更する方法を説明していないため、これが実際にはあなたの質問に答えていないことはわかっていますが、データベース構造を再考できるように、とにかくこの回答を投稿したかったのです。

編集: DB 構造を本当に変更できない、または変更したくない場合は、目的を達成する方法についてこの質問を参照してください:主キー Entity Framework 4.0 の一部を更新する

于 2013-09-27T12:30:37.007 に答える