繁体   English   中英

区分EF查询和LINQ查询

[英]Distinguish EF query and LINQ query

我是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}

谢谢彼得

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

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

来自EF文档

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

实体框架是C#中使用的库。

这个文章关于LINQ MSDN上:

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

LINQ是C#的一部分

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM