Model view controller MVC Linq到数据库中的SQL更新对象
在LINQ to SQL数据上下文中有一个名为Code的表。我的Models文件夹中还有一个名为Codes的类。我要做的是将更新的对象代码保存到我的数据库表代码中。这可能吗 在我的控制器中,我会将编辑过的对象传递给我的模型。我的CodesRepository文件包含以下内容: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
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);但我还是犯了一个错误。我认为我不能将我的目标代码实例保存到我的代码数据库表中。上有一些详细信息,描述了如何处理附加和乐观并发。