C# 实体框架中的合并
有没有从.NET Entity framework 4调用命令的方法?没有这样的内置功能-您必须构建自己的功能。例如,非常常见的方法如下: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
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开始。