我正在尝试根据用户选择更新特定记录。关于实体框架语法,我不是很熟悉。是否可以在 Entity FrameWork 中实现这条 SQL 语句?
谢谢!
update Table1
set Colum1='1'
where Column2='1234567'
我正在尝试根据用户选择更新特定记录。关于实体框架语法,我不是很熟悉。是否可以在 Entity FrameWork 中实现这条 SQL 语句?
谢谢!
update Table1
set Colum1='1'
where Column2='1234567'
var record = _db.Table1.where(r => r.Column2 == '1234567');
record.Column1 = '1'
_db.SaveChanges();
其中 _db 是实体框架 DbContext 类...
HTH。
是的,Linq 版本:
Table1Entity entity = from e in dbContext.Table1Entitys
where e.Column2 = '1234567'
select e
entity.Column1 = '1';
dbContext.SaveChanges();
并且看起来 Sunny 有Lambda 版本。
但是,这和 Sunny 的答案都没有产生确切的 SQL,因为它们实际上都产生了一个 SELECT 和一个 UPDATE:
SELECT <all columns>
FROM <table>
WHERE Column2 = '1234567'
UPDATE <table>
SET <allcolumns> = <allvalues>, etc etc
WHERE Column2 = '1234567'
如果您只想更新,那么您将执行以下操作:
var row = new Row();
// assuming a single column PK (id)
row.Column1 = '1';
row.Column2 = '1234567';
dbContext.Attach(row);
var entity = dbContext.Entity(entity);
entity.Property(e => e.Column2).IsModified = true;
dbContext.SaveChanges();
准确地产生:
UPDATE <Table>
SET Column2 = '1234567'
WHERE Column1 = '1'
// 注意:ctx = 你的 DbContext
var tbl1 = (from t in ctx.Table1 where t.Id == 1234567 select t).FirstOrDefault();
if (tbl1 != null) {
tbl1.Column1 = "1";
ctx.SaveChanges();
}