2011-11-11 11 views
1

アイテムに複数のタグが付いているシナリオがあります。データベースに登録されていないオブジェクトのみを挿入します。

既に存在するタグとAddObject()がないタグをAttach()する必要があると思います。これは一般的なシナリオでなければなりません。これに対するベストプラクティスのアプローチは何ですか?

+0

「データベースにタグが既に存在しています」と言うと、(a)特定のインスタンスが存在するか、(b)同じ値のタグが存在しているということですか? –

+0

よくhttpからの文字列として来る、私はその文字列と同じ値で既存のタグを一致させ、重複を作成しない。だからb)私は思います。 – Tom

答えて

2

これに対処するための唯一の現実的な方法は、

  • が既に
  • を2つのグループにあなたのコレクションを分割存在するアイテムの検索です:
    • 新しいアイテム
    • 既存の項目
  • 新しい項目を追加し、必要に応じて既存の項目を添付します。

それでは、適切な取り付け&追加この

var tags = context.Tags.Where(t => t.ItemId = itemId) // search via your item 
    .Select(t => t.TagValue); 

var newTags = myItem.Tags.Where(t => !tags.Contains(t.TagValue)); 
var existingTags = myItem.Tags.Where(t => tags.Contains(t.TagValue)); 

のようなタグを分割します。

関連する問題