0

实体框架 5.0 问题。

我是实体框架的新手,基本上我有一个表“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:得到值后,我想重新赋值,比如Number += 1;我需要将其写入数据库。

感谢帮助。

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 回答