3

Entity Framework を使用しています。テーブル PersonCategory に外部キーを持つテーブル Person があります。Person Id は、自動インクリメント ID (1,1) です。個人エンティティを更新するたびに、カテゴリが見つかった場合でも、エンティティ フレームワークによって PersonCategory テーブルの行が挿入されます。

データベース優先設計を使用しています。

class Person
{
  public string Name {get;set}
  public PersonCategory {get;set;}
}

class PersonCategory
{
  public int ID {get;set}
  public string Name{get;set;}
}
4

3 に答える 3

5

PersonCategoryまず、既存のものをコンテキストにアタッチする必要があります。

var myPersonCat = new PersonCategory { ID = 1, Name = "Foo" };
var myPerson = new Person { Name = "Bar", PersonCategory = myPersonCat };

context.PersonCategories.Attach(myPersonCat);    
context.People.Add(myPerson);
于 2012-08-28T10:42:28.497 に答える
0

を保存する前にをState設定する必要がありますPersonCategoryUnchangedPerson

于 2012-08-28T10:41:13.333 に答える
0

更新に使用しているコードを投稿できますか? 毎回新しい人を追加しているように聞こえますが、新しいレコードには人のカテゴリが追加されます。あなたが望むのは、EFコンテキストから必要な人を取得し、必要なフィールドを更新し、データベースに新しい要素を追加せずにコンテキストへの変更を永続化することです。このようにして、既存のレコード、既存の関係のみを変更します維持されます。何かのようなもの

var myPerson = context.People.FindbyId(personId);
myPerson.Name = "Joe";
myPerson.Age = "20";

context.SaveAllChanges();
于 2012-08-28T10:51:55.647 に答える