0

Entity Frame 5.0 の質問です。

私はEntity Frameを初めて使用します。基本的に、テーブル「MyPIN」があります。

[Table("MyPIN")]
public class BatchPINDetail
{
    public BatchPINDetail();
    public int Number { get; set; }

クエリを実行したい

int x = the biggest Number FROM MyPIN 

対応するコードは次のとおりです。

public class InContext : DbContext
{
    public InContext();
    public InContext(string connectionString);

    public DbSet<BatchDetail> BatchDetailsRecords { get; set; }

}

質問 1: 取得方法がわかりません。

質問 2: 値を取得した後、値を再割り当てしたいと思います。数値 += 1 とします。DBに書き込む必要があります。

手伝ってくれてありがとう。

4

2 に答える 2

0
InContext inContext = new InContext(cnStr);
// get first biggest item
BatchPINDetail entity = inContext.BatchDetailsRecords
                                 .OrderByDescending(x => x.Number)
                                 .First();
// get all biggest items
BatchPINDetail entities = inContext.BatchDetailsRecords
                                 .Where(x => x.Number == x.Max(x => x.Number))
                                 .ToArray();

// and if you just want to get biggest number. 
// but note that if you just change `num` nothing will happen.
int num = inContext.BatchDetailsRecords.Max(x => x.Number);

entity.Number += 1;
inContext.SaveChanges();
于 2012-11-12T16:24:05.907 に答える
0

次のコードのような直接的なアプローチを使用して、データベースへの前後の呼び出しを回避できます。

    InContext inContext = new InContext(cnStr);
    string Sql="SELECT *  FROM MyPIN where Number in (Select MAX(Number) from MyPIN)";
    BatchPINDetail[] entities = inContext.BatchDetailsRecords.SqlQuery(Sql).ToArray();

これで、変更を行い、その後 SaveChanges() を呼び出すことができます。

于 2012-11-12T23:02:55.293 に答える