我是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}
由于 彼得
答案 0 :(得分:1)
LINQ是一种用您选择的语言(VB,C#,.NET)查询的方式。它与EF没有直接关系。 EF是映射到数据库的东西,您使用LINQ作为查询数据库的方法。它只是与EF配对使用的语法来获取数据。您还可以在诸如集合之类的东西上使用LINQ。
答案 1 :(得分:1)
没有E.F.查询这样的东西。使用E.F.时使用的查询是LINQ。然而,LINQ做了很多。
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(尽管大多数模板默认包含它)。