[英]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.