是否支持新行创建?

时间:2013-07-29 21:03:57

标签: c# entity-framework

鉴于以下UPSERT类似scenerio:

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();

一般的扩展方法应该为我做这个简单的任务,只是看起来很奇怪(如果)这在框架中不存在。

3 个答案:

答案 0 :(得分:1)

这样的事情对你有用吗?

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

context.SaveChanges();

答案 1 :(得分: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;
    }

答案 2 :(得分:0)

标准EF功能在这里可能很有用

 Context.Set<TPoco>().AddOrUpdate(poco);