gpt4 book ai didi

.net - 如何在没有数据上下文的情况下更新对象

转载 作者:行者123 更新时间:2023-12-02 20:34:43 25 4
gpt4 key购买 nike

Entity Framework 提供了极大的灵 active ,可以在同一数据上下文中更新数据

Dim personA = (from p in datacontext.Person where p.PersonID = 1 select p)
personA.name = txtName.value
datacontext.savechanges()

如果我必须将此更新功能移动到仅在请求中接受“Person”的服务层,那么将我的“Person”请求对象分配到数据上下文而不再次进行深度复制的最佳方法是什么?

最佳答案

您需要将实体对象附加到数据上下文。

您还需要使用 AttachUpdeted 方法扩展数据上下文分部类。当您将对象附加到数据上下文时,它不知道已进行更新。下面的代码将告诉数据上下文每个属性都已更新并且需要写入数据库。

public static void Save(EntityObject entity)
{
using(MyContext ctx = new MyContext)
{
ctx.AttachUpdated(entity);
ctx.SaveChanges();
}
}

public static void AttachUpdated(this ObjectContext obj, EntityObject objectDetached)
{
if (objectDetached.EntityState == EntityState.Detached)
{
object original = null;
if (obj.TryGetObjectByKey(objectDetached.EntityKey, out original))
obj.ApplyPropertyChanges(objectDetached.EntityKey.EntitySetName, objectDetached);
else
throw new ObjectNotFoundException();
}
}

article 1
article 2

关于.net - 如何在没有数据上下文的情况下更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com