2012-04-19 39 views
96

いくつかのテストデータを使用して開発データベースをシードしようとしています。EF 4.3で複雑なキーを持つAddOrUpdateでデータをシードする方法

context.People.AddOrUpdate(p => p.Id, people));私は多くの成功を収めています。

私には、プライマリキーがわからない別のテーブルがあります。

たとえば、私はFirst and Last namesに一致するAddOrUpdateが必要です。

Expressionを正しく書き込む方法がわかりません。

context.People.AddOrUpdate(p => p.FirstName && p.LastName, people); 

明らかに間違っていますが、私が探している解決策を伝えたいと思います。あなたが原因ナビゲーションプロパティを使用してのOnly primitive types or enumeration types are supported in this context.を得た場合

context.People.AddOrUpdate(p => new { p.FirstName, p.LastName }, people); 

答えて

189

はこれを試してみてください。

+10

@LadislavMrnka何識別子は複合型すなわち 'context.People.AddOrUpdate(P =>新しい{p.Name.FirstName、p.Name.LastName}人)'する必要がありますか? – gabe

+3

@ LadislavMrnkaまた、プロパティがnull可能な型の場合はどうなりますか? context.People.AddOrUpdate(p =>新しい{p.Birthdate}、people) '? – stack247

+2

ここで注意しなければならないのは、 'people'コレクションがリストではなくARRAYである必要があるということです。エンティティのリストがある場合は、単にリストの.ToArray()を呼び出すことができます。私はその1つと苦労した:) - 良い答え –

0

- (おそらく唯一のゲッターで)エンティティに直接外部キープロパティを追加することを検討してラディスラフMrnkaが提案されているとして、それを使用します。

関連する問題