C# 实体框架中的合并

C# 实体框架中的合并,c#,linq,entity-framework,linq-to-entities,sql-merge,C#,Linq,Entity Framework,Linq To Entities,Sql Merge,有没有从.NET Entity framework 4调用命令的方法?没有这样的内置功能-您必须构建自己的功能。例如,非常常见的方法如下: public void SaveOrUpdate(MyEntity entity) { if (entity.Id == 0) { context.MyEntities.AddObject(entity); } else { context.MyEntities.Attach(entit

有没有从.NET Entity framework 4调用命令的方法?

没有这样的内置功能-您必须构建自己的功能。例如,非常常见的方法如下:

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
}

这是处理分离实体的示例,该实体在数据库(
IDENTITY
)中自动生成了
Id
)。新实体的默认Id始终为0,因为在保存更改时将分配实际值。

谢谢,但是,当使用DDD并附加聚合根时,需要进行几级属性嵌套,然后需要执行某种形式或递归。有这样的例子吗?(同样令人费解的是,当NHibernate等其他ORM提供开箱即用的合并时,EF团队希望开发人员自己处理这种常见场景),但如果您还不知道数据库中是否存在该对象呢?
MERGE
语句正好用于确定对象是否存在,并根据需要进行更新或插入。您错过了删除部分。@JoshuaFrank这就是
if(entity.Id==0)
的作用;可能在数据库中,Id从1开始。