【发布时间】:2009-05-26 10:18:32
【问题描述】:
如何根据 LINQ to SQL 中的特定 ID 更新记录?
【问题讨论】:
标签: linq linq-to-sql
如何根据 LINQ to SQL 中的特定 ID 更新记录?
【问题讨论】:
标签: linq linq-to-sql
LINQ 是一个查询工具 (Q = Query) - 因此没有神奇的 LINQ 方法可以只更新单行,除非通过(面向对象的)数据上下文(在 LINQ-to-SQL 的情况下) .要更新数据,您需要将其取出、更新记录并提交更改:
using(var ctx = new FooContext()) {
var obj = ctx.Bars.Single(x=>x.Id == id);
obj.SomeProp = 123;
ctx.SubmitChanges();
}
或者写一个在TSQL中做同样事情的SP,通过data-context暴露SP:
using(var ctx = new FooContext()) {
ctx.UpdateBar(id, 123);
}
【讨论】:
在没有更详细信息的情况下:
using(var dbContext = new dbDataContext())
{
var data = dbContext.SomeTable.SingleOrDefault(row => row.id == requiredId);
if(data != null)
{
data.SomeField = newValue;
}
dbContext.SubmitChanges();
}
【讨论】:
AdventureWorksDataContext db = new AdventureWorksDataContext();
db.Log = Console.Out;
// Get hte first customer record
Customer c = from cust in db.Customers select cust where id = 5;
Console.WriteLine(c.CustomerType);
c.CustomerType = 'I';
db.SubmitChanges(); // Save the changes away
【讨论】:
DataClassesDataContext dc = new DataClassesDataContext();
FamilyDetail fd = dc.FamilyDetails.Single(p => p.UserId == 1);
fd.FatherName=txtFatherName.Text;
fd.FatherMobile=txtMobile.Text;
fd.FatherOccupation=txtFatherOccu.Text;
fd.MotherName=txtMotherName.Text;
fd.MotherOccupation=txtMotherOccu.Text;
fd.Phone=txtPhoneNo.Text;
fd.Address=txtAddress.Text;
fd.GuardianName=txtGardianName.Text;
dc.SubmitChanges();
【讨论】:
我在一周前找到了解决方法。您可以使用带有“ExecuteCommand”的直接命令:
MDataContext dc = new MDataContext();
var flag = (from f in dc.Flags
where f.Code == Code
select f).First();
_refresh = Convert.ToBoolean(flagRefresh.Value);
if (_refresh)
{
dc.ExecuteCommand("update Flags set value = 0 where code = {0}", Code);
}
在ExecuteCommand 语句中,您可以直接发送查询,其中包含您要更新的特定记录的值。
value = 0 --> 0 是记录的新值;
code = {0} --> 是您将发送过滤器值的字段;
代码 --> 是该字段的新值;
我希望这个参考资料有所帮助。
【讨论】: