c# - Linq2SQL : Update object not created in datacontext

标签 c# asp.net linq-to-sql

通常,当您在 linq2sql 中更新对象时,您会从数据上下文中获取对象并使用相同的数据上下文来保存对象,对吗?

更新尚未被您用于执行保存操作的数据上下文检索的对象的最佳方法是什么,即我正在使用 flourinefx 在 flex 和 asp.net 之间传递数据,以及当对象从client to be saved 不知道怎么保存对象?

   public static void Save(Client client)
    {
        CompanyDataContext db = new CompanyDataContext();
        Validate(client);
        if(client.Id.Equals(Guid.Empty))
        {
            //Create (right?):
            client.Id = Guid.NewGuid();
            db.Clients.InsertOnSubmit(client);
            db.SubmitChanges();
        }
        else
        {
            //Update:
            OffertaDataContext db = new OffertaDataContext();
            db.Clients.????

        }
    }

更新:使用 Attach 的不同方法在这种情况下不起作用。所以我想需要一种基于反射的方法。

最佳答案

要更新现有但断开连接的对象,您需要将其“附加”到数据上下文中。这将重新使用现有的主键等。您可以控制如何处理更改 - 即视为脏,或视为干净并跟踪 future 的更改等。

Attach 方法在桌面上 - 即

ctx.Customers.Attach(customer); // optional bool to treat as modified

关于c# - Linq2SQL : Update object not created in datacontext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/371439/

相关文章:

c# list<int> 如何在两个值之间插入一个新值

javascript - 在 ASP.NET 中访问控制客户端名称而不是 ID

linq-to-sql - 错误: The entity or complex type cannot be constructed in a LINQ to Entities query

c# - Entity Framework - 检查 foreach/update 查询

c# - 获取互斥量时如何避免竞争条件?

c# - 使用 DRY 和分而治之原则链接的异步方法

c# - 在 c# 控制台应用程序中使用 WCF Royal Mail API

asp.net - 埃尔玛SMTP

c# - 从相关数据库中获取值(value)

c# - 将文件拖放到程序中