区分EF查询和LINQ查询

时间:2017-10-04 14:23:57

标签: c# entity-framework linq

我是Entity Framework的新手。我对EF查询和LINQ查询的区别感到困惑。我有两个表和下面列出的相关查询。你能否告诉我所有这些查询是LINQ还是EF中的任何一个?我需要编写EF查询来选择整行,几列和连接。您的帮助或任何相关链接将受到高度赞赏。

Product_Details表 Product_ID,Product_Name,Price,Item_Desc,Stock_Avaialble,Created_Date

Sales_Details表 Sales_ID,Product_ID,Qunatity,Total_Amont

var result = context.ProductDetails
                where ProductID == 10
                select new {ProductID, ProductName, Price}

var result = from prod in context.ProductDetails
                    where ProductID == 10
                    select new {ProductID, ProductName, Price}

var result = context.ProductDetails
                    .Where(p=>p.ProductID == 10)
                    .Select(p=> new Prod(p.ProductID, p.ProductName, p.Price))

var result1 = from prod in context.ProductDetails
                    join sales in context.SalesDetails on prod.ProductID == sales.ProductID
                    select new {prod.ProductID, prod.ProductName, sales.Qunatity, sales.TotalAmount}

由于 彼得

3 个答案:

答案 0 :(得分:1)

LINQ是一种用您选择的语言(VB,C#,.NET)查询的方式。它与EF没有直接关系。 EF是映射到数据库的东西,您使用LINQ作为查询数据库的方法。它只是与EF配对使用的语法来获取数据。您还可以在诸如集合之类的东西上使用LINQ。

答案 1 :(得分:1)

没有E.F.查询这样的东西。使用E.F.时使用的查询是LINQ。然而,LINQ做了很多。

来自E.F. documentation

  

Entity Framework是一个对象关系映射器(O / RM),它使.NET开发人员能够使用.NET对象使用数据库。它消除了开发人员通常需要编写的大多数数据访问代码的需要。

Entity Framework是C#中使用的库。

来自this关于MSDN上LINQ的文章:

  

我们使用术语语言集成查询(LINQ)来表明查询是开发人员主要编程语言的集成功能

LINQ是C#的部分

  

添加到.NET Framework的通用查询工具适用于所有信息源,而不仅仅是关系数据或XML数据。此工具称为.NET语言集成查询(LINQ)。

这里的关键词是“适用于所有信息来源”。所有E.F.都是抽象的数据库,并允许您使用它们,就好像它们是程序中的普通可用数据一样。

  

标准查询运算符允许将查询应用于任何基于IEnumerable的信息源。

您可以使用LINQ查询和扩展方法来获取LINQ提供的枚举,以便使用E.F.为您提供的“枚举”(DB抽象)。

答案 2 :(得分:0)

据我了解您的问题,您的所有代码都会返回与linq相关的查询。它们定义了要在数据库中完成的操作,但尚未访问数据库,因为它们没有定义执行命令(find,singleordefault,first,tolist等)。 Linq用于构建和执行查询,例如EF语言的添加,也可以这样做,但使用有限。对于数据库,linq构建查询并通过EF(或其他ORM)访问数据库。

某些语法如AsNoTracking(),Include(),ThenInclude()等是EF语法专有(意味着你必须引用该库)。使用linq语法意味着您必须引用linq(尽管大多数模板默认包含它)。