0

次の UPSERT のようなシーンがあるとします。

EntityType myEntity = null;
if(newItem)
{
   myEntity = new EntityType();
}
else
{
  myEntity = context.TableName.Where(item => item.PrimaryKey == key).Single();
}

if(newItem)//This check bugs me
{
  context.TableName.Add(myEntity);//conditionally add the item to the context
}

context.SaveChanges();

アイテムをコンテキストに追加する必要があるかどうかを判断する必要があります。context.TableName.NewRow()エンティティ フレームワークは、最後の条件チェックを保存するために何らかの種類のものを提供していますか? このようにして、代わりにこのようなことができます....

EntityType myEntity = null;
if(newItem)
{
   myEntity = context.TableName.NewRow();
}
else
{
  myEntity = context.TableName.Where(item => item.PrimaryKey == key).Single();
}   

context.SaveChanges();

ジェネリック拡張メソッドがこの単純なタスクを実行する必要がありますが、これがフレームワークにまだ存在しない場合は奇妙に思えます。

4

3 に答える 3

0

これは EF では利用できないように見えるので、それを行うための独自の拡張機能を作成しました。

    public static T NewRow<T>(this System.Data.Entity.DbSet<T> entity) where T : class, new()
    {
        T t = new T();
        entity.Add(t);
        return t;
    }
于 2013-07-29T21:31:11.033 に答える