0

我正在尝试根据用户选择更新特定记录。关于实体框架语法,我不是很熟悉。是否可以在 Entity FrameWork 中实现这条 SQL 语句?

谢谢!

  update Table1
  set Colum1='1'
  where Column2='1234567'
4

3 回答 3

3
var record = _db.Table1.where(r => r.Column2 == '1234567');
record.Column1 = '1'
_db.SaveChanges();

其中 _db 是实体框架 DbContext 类...

HTH。

于 2012-04-27T16:10:00.360 回答
2

是的,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'
于 2012-04-27T16:10:18.253 回答
0

// 注意:ctx = 你的 DbContext

  var tbl1 = (from t in ctx.Table1 where t.Id == 1234567 select t).FirstOrDefault();
  if (tbl1 != null) {
      tbl1.Column1 = "1";
      ctx.SaveChanges();

  }
于 2012-04-27T16:12:45.033 回答