Model view controller MVC Linq到数据库中的SQL更新对象

Model view controller MVC Linq到数据库中的SQL更新对象,model-view-controller,linq-to-sql,repository,Model View Controller,Linq To Sql,Repository,在LINQ to SQL数据上下文中有一个名为Code的表。我的Models文件夹中还有一个名为Codes的类。我要做的是将更新的对象代码保存到我的数据库表代码中。这可能吗 在我的控制器中,我会将编辑过的对象传递给我的模型。我的CodesRepository文件包含以下内容: public Codes EditCode(Codes CodeToEdit) { private EventsDataContext _db = new EventsDataCon

在LINQ to SQL数据上下文中有一个名为Code的表。我的Models文件夹中还有一个名为Codes的类。我要做的是将更新的对象代码保存到我的数据库表代码中。这可能吗

在我的控制器中,我会将编辑过的对象传递给我的模型。我的CodesRepository文件包含以下内容:

public Codes EditCode(Codes CodeToEdit)
        {
            private EventsDataContext _db = new EventsDataContext();
            Codes C = new Codes();
            C = CodeToEdit;

            _db.Codes.InsertOnSubmit(C); //error here, something about invalid arguments
             //InsertOnSubmit is for adding a new object, but I don't know the syntax
             // for editing an existing object.  

            _db.SubmitChanges();


        }
这可能不是正确的方法,所以有人能给我指出正确的方向吗?我是否需要一个名为Codes的类,或者我是否需要以某种方式使用我的数据库表?谢谢



解决方案:我决定将Linq改为SQL,改为实体框架,效果会更好。这样,我就不必定义我的Codes类,因为它直接来自数据库,我可以删除Codes类文件。

您应该使用
DataContext.Attach
,当您返回与数据库中现有行对应的对象时。要使Linq to sql的乐观并发处理工作,这需要您具有原始的、未保存的对象,或者在数据库中有一个
TimeStamp
列。后者是首选,因为它只需要处理一个额外的字段(可能通过web表单中的隐藏字段)。

+1用于将Linq应答为SQL而不是实体框架!Cheers我尝试了以下操作:_db.Codes.Attach(CodeToEdit);但我还是犯了一个错误。我认为我不能将我的目标代码实例保存到我的代码数据库表中。上有一些详细信息,描述了如何处理附加和乐观并发。