0

ユーザーの選択に基づいて特定のレコードを更新しようとしています。Entity Framework の構文に関しては、私はあまり詳しくありません。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 は Entity Framework 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 バージョンがあるようです。

ただし、これもサニーの答えも、実際には両方とも SELECT と UPDATE を生成するため、正確な SQL を生成しません。

SELECT <all columns>
FROM <table>
WHERE Column2 = '1234567'

UPDATE <table>
SET <allcolumns> = <allvalues>, etc etc
WHERE Column2 = '1234567'

UPDATEだけが必要な場合は、次のようにします。

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 に答える