鉴于以下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();
一般的扩展方法应该为我做这个简单的任务,只是看起来很奇怪(如果)这在框架中不存在。
答案 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);