有没有一种方法可以从.NET Entity Framework 4调用T-Sql的MERGE命令?
没有这样的内置功能 - 您必须自己构建。非常常见的方法是:
public void SaveOrUpdate(MyEntity entity)
{
if (entity.Id == 0)
{
context.MyEntities.AddObject(entity);
}
else
{
context.MyEntities.Attach(entity);
context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
}
// You can call SaveChanges here or you can call it separately after multiple changes
}
这是一个处理在数据库中具有自动生成Id
的脱离实体(IDENTITY
)的示例。新实体的默认Id
始终为0,因为实际值将在保存更改时分配。
MERGE
语句正是用于确定对象是否存在,如有需要则进行更新或插入。 - Joshua Frankif (entity.Id == 0)
的作用;假设在数据库中,Id 从1开始。 - Tom Blodget