c# - 如何快速更新ADO实体?

标签 c# .net frameworks ado.net entity

我有一个具有如此多属性的实体,我不想手动执行类似的操作

public void Update(Contact cont)
    {
        using (var ctx = new DatabaseEntities())
        {
            var res = from n in ctx.Contacts
                          where n.ContactID == cont.ContactID
                          select n;

            var selContact = res.First();
            selContact.AddressSuiteNumber = cont.AddressSuiteNumber;
            selContact.PhoneNumber = cont.PhoneNumber;
            /* and doing this for eeeeeeevery 40 properties */
            ctx.SaveChanges();

        }

    }

我试过了

selContact = cont

没有效果。是否有任何快速方法可以将数据从 Update() 方法中作为参数传递的实体实例复制到 LINQ select 中找到的数据,然后保存它?

最佳答案

如果您的实体尚未附加到上下文,您可以尝试附加它并将其状态更改为已修改:

using (var ctx = new DatabaseEntities())
{
    ctx.Contacts.Attach(cont);

    // Marks all properties as modified, so new values will be pushed to DB on SaveChanges
    ctx.ObjectStateManager.ChangeObjectState(cont, System.Data.EntityState.Modified);

    ctx.SaveChanges();
}

关于c# - 如何快速更新ADO实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779425/

相关文章:

C# 列表添加有效但不追加?

.net - VB.net表格不响应

.net - 面试题: WPF Developer

c# - CoCreateInstance 失败,返回 0x80131500

android - 在不重新启动应用程序的情况下转移 Android 应用程序开发框架

ios - 使用 LinkedinSwift 的 LinkedIn 登录突然无法正常工作

web-services - 为什么 lift Web 框架具有可扩展性?

c# - 在表单加载时禁用标签页,然后在单击按钮时启用

c# - C#中多维数组的源码是如何生成的

c# - WeakEventManager 和静态事件