1

私は次の問題をしなければなりません。XML ファイルの大規模なコレクションがあります。各 XML ファイルには、さまざまな従業員が含まれています。一意の従業員をデータベースに追加する必要があります。データベースには、各従業員の姓、名、生年月日があります。同じプロパティを持つ従業員がデータベースに既に存在するかどうか、および挿入しないかどうかを確認したい。

私は次のコードを使用しています:

Entities entities;
entities.AddToEmployee(emp);
entities.SaveChanges();

私の従業員は、別のデータ構造である販売に接続されています。したがって、データベース内の従業員全体ではなく、従業員の主キーのみを sales テーブルに追加する必要があります (既に存在する場合)。

前もって感謝します!

4

2 に答える 2

1

「パターンの検索または追加」は、次のような状況で役立ちます。

var db = new YourContext();
var emp = db.Employees.Find(empID) ?? db.Employees.Add( new Employee { FirstName ="xx" , LastName="xxx"});
db.SaveChanges();

このようにして、emp オブジェクトがデータベースに存在する場合、または作成されてデータベースに保存された場合は、そのオブジェクトがロードされます。複数のプロパティを検索する場合は、Find() を Where() に置き換える必要がある場合があります。

于 2012-05-19T08:58:47.010 に答える
0

Entity Framework では、いくつかの方法でリレーションシップを作成および変更できます。あなたの場合、最初に従業員を検索し、存在する場合は、このようなナビゲーション プロパティの代わりに ForeingKey を設定します。

sale.EmployeeID = x; // id of existing employee

従業員が新しい場合は、新しい従業員オブジェクトを作成し、それを販売オブジェクトから参照して保存する必要があります。

「...ObjectContext にアタッチされているオブジェクトを EntityCollection に追加できません...」というエラーが表示される場合は、開いているコンテキストが 1 つだけであることを確認してください。このようにすべてのデータベース操作をラップすることを好みます

using(var dbContext = new MyContext())
{
//do persistence stuff
}
于 2012-05-19T12:07:50.757 に答える