3

次のフィールドを持つテーブル(およびEntity Data Modelのエンティティ)Personがあります:

Name              Type
SocialID          String      
FirstName         String
LastName          String

これSocialIDは主キーです。SocialID各レコードの値を更新したい。ただし、Entity Framework でこのフィールドを更新しようとすると、次のエラーが発生します。

The property 'SocialID' is part of the object's key information and cannot 
be modified.

上記のエラーを取得するコードは次のとおりです。

foreach (var p in Entity.Persons)
{
   p.SocialID= p.SocialID + "00";
   Entity.SaveChanges();
}

どうすればこれを行うことができますか??

4

3 に答える 3

2

私の知識によれば、一度生成された主キーはプログラムで更新できないため、主キーの目的に反します。新しい主キーを使用してすべてのデータを再度挿入し、古いデータを削除するとよいでしょう。

于 2013-02-01T10:35:26.643 に答える
-1

主キーを変更する必要があるのはなぜですか? エンティティ フレームワークはそのフィールドを使用してオブジェクトを識別します。主キーである間は値を変更できません。

最初の回答に基づいて、Personテーブルを独自の主キーを持つように変更することをお勧めします.PersonIDと言って、SocialIDをSocialテーブルの外部キーとして維持します。個人に複数のソーシャル レコードが必要な場合は、別のテーブルを作成して、PersonId を複数の SocialId に対応させ、個人テーブルから SocialId を削除する必要がある場合があります。

于 2013-02-01T10:35:35.073 に答える