Linq查询,在不使用表的对象的情况下获取表的记录



我正在使用实体框架6来开发我的c#应用程序。我已经将我的数据模型命名为Allocation模型,并且我有一个名为JobTable的表。

我的数据库模型类看起来像这个

public partial class  Allocation : DbContext
{
public  Allocation()
: base("name=Allocation")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<JOB_Header> JOB_Header { get; set; }
}

我的作业标题看起来像这个

我的Job头类看起来像这个Job jeader类,它是从我的表Job_header 的实体框架工作模型中生成的类

public partial class JOB_Header
{
public int JobID { get; set; }
public string CustomerCode { get; set; }
public string CustomerName { get; set; }
public string MobileNo { get; set; }
public string LocationCode { get; set; }
public System.DateTime JobDate { get; set; }
public bool Status { get; set; }
public string Remarks { get; set; }
}

如何查询sql查询的数据,如下所示。?

SELECT TOP 1 * FROM JOB_Header ORDER BY JOBID DESC;
select CustomerName from JOB_Header where JobID =1;

using (DataControllers.AllocationJAEntities = new DataControllers.Allocation())
{
JHeaderModel = JAEntities.JOB_Header.Where(a => a.JobID == 1).FirstOrDefault();
}

通常我会得到上面这样的对象的数据。但我需要获得一个单独的字段,而不需要将数据读取到为数据模型中的Table创建的类的对象中,从而获得该对象的所有行详细信息。如何以这种方式处理正常查询?

using (var context = new DataControllers.Allocation())
{
var header = context.JOB_Header.OrderByDescending(j => j.JobID).FirstOrDefault();
}

不确定你的变量名,所以我做了自己的

为什么不能像下面这样只选择该字段。此外,如果你的JobID是一个关键字段(看起来像(,那么我认为根本不需要FirstOrDefault(),因为Where()会只返回一条记录

JAEntities.JOB_Header.Where(a => a.JobID == 1).Select(x => x.CustomerName)

当我们只想获得您可以通过以下更改完成的名称时。概念是当你找到我的KEY时,最多会有NOOne记录,然后-

string name = string.Empty;
using (DataControllers.AllocationJAEntities = new DataControllers.Allocation())
{
name = JAEntities.JOB_Header.Find(1)?.CustomerName;
}

注意,我使用了Find方法,因为我们使用主键进行搜索,否则我们也可以使用WHERE

记住如果您实际使用Find,它会像下面的SQL查询-一样查询您的数据库中的整行

从Id=1 的表中选择*

意味着您的DB整行将返回您的特定ID和代码,然后您只读取您的name属性。

但是,当您想要实现以下SQL查询-之类的功能时

SELECT CustomerName FROM表WHERE Key=1

对于这种情况,Rahul的回答是正确的。-

string name = string.Empty;
using (DataControllers.AllocationJAEntities = new DataControllers.Allocation())
{
name = JAEntities.JOB_Header
.Where(a => a.JobID == 1)
.Select(x => x.CustomerName)
.FirstOrDefault();
}

要获得包括订单在内的第一张记录,您可以(如Stephen所述(-

using (var context = new DataControllers.Allocation())
{
var job = context.JOB_Header.OrderByDescending(j => j.JobID).FirstOrDefault();
}

相关内容

  • 没有找到相关文章

最新更新