你会如何评价每一个:
我喜欢我的SQL,因此一直是ADO.NET和存储过程的忠实粉丝,但我最近玩过Linq to SQL,并且被写出我的DataAccess层的速度和决定花费的速度感到震惊有一段时间真正理解Linq to SQL或EF ......或者两者都没有?
我只是想检查一下,这些技术中没有一个很大的缺陷会让我的研究时间变得毫无用处.例如,性能非常糟糕,对于简单的应用程序来说它很酷,但只能带你到目前为止.
更新: 您可以专注于EF VS L2S VS SP而不是ORM VS SP.我主要对EF VS L2S感兴趣.但我很想将它们与存储过程进行比较,因为普通的SQl是我所了解的很多东西.
我在SQL中有一个程序,我试图变成Linq:
SELECT O.Id, O.Name as Organization
FROM Organizations O
JOIN OrganizationsHierarchy OH ON O.Id=OH.OrganizationsId
where OH.Hierarchy like '%/12/%'
Run Code Online (Sandbox Code Playgroud)
我最关心的是:
where OH.Hierarchy like '%/12/%'
Run Code Online (Sandbox Code Playgroud)
我有一个存储层的列,例如/ 1/3/12,所以我只使用%/ 12 /%来搜索它.
我的问题是,Linq或.NET相当于使用百分号?
我有一个存储过程有三个参数,我一直在尝试使用以下命令返回结果:
context.Database.SqlQuery<myEntityType>("mySpName", param1, param2, param3);
Run Code Online (Sandbox Code Playgroud)
起初我尝试使用SqlParameter
对象作为参数,但这不起作用并抛出SqlException
以下消息:
过程或函数'mySpName'需要参数'@ param1',这是未提供的.
所以我的问题是你如何使用这个方法与期望参数的存储过程?
谢谢.
在T-SQL中,您可以进行如下查询:
SELECT * FROM Users WHERE User_Rights IN ("Admin", "User", "Limited")
Run Code Online (Sandbox Code Playgroud)
你会如何在LINQ to Entities查询中复制它?它甚至可能吗?
var items = from c in contacts
select new ListItem
{
Value = c.ContactId, //Cannot implicitly convert type 'int' (ContactId) to 'string' (Value).
Text = c.Name
};
var items = from c in contacts
select new ListItem
{
Value = c.ContactId.ToString(), //Throws exception: ToString is not supported in linq to entities.
Text = c.Name
};
Run Code Online (Sandbox Code Playgroud)
无论如何我能做到这一点吗?注意,在VB.NET中没有问题使用它工作得很好的第一个片段,VB很灵活,我无法习惯C#的严格!
我有以下代码.我收到错误:
"转换为值类型'Int32'失败,因为具体化值为null.结果类型的泛型参数或查询必须使用可空类型."
当CreditHistory表没有记录时.
var creditsSum = (from u in context.User
join ch in context.CreditHistory on u.ID equals ch.UserID
where u.ID == userID
select ch.Amount).Sum();
Run Code Online (Sandbox Code Playgroud)
如何修改查询以接受空值?
LINQ,我在网站上提出了很多问题.我提出的问题范围广泛而且多种多样,往往背后没有太多背景.因此,为了巩固我在Linq上获得的知识,我发布了这个问题,以便在我继续学习LINQ时使用其他信息来维护和更新它.
我也希望它能够成为想要了解LINQ的其他人的有用资源.
来自MSDN:
LINQ项目是.NET Framework的一组扩展的代号,包含语言集成的查询,设置和转换操作.它使用本机语言语法扩展C#和Visual Basic,并提供类库以利用这些功能.
这意味着LINQ提供了一种使用通用语法查询各种数据源的标准方法.
目前,Microsoft提供了一些不同的LINQ提供程序:
还有很多其他的,其中许多列在这里.
Chook提供了一种输出CSV文件的方法
Jeff显示了如何从数组中删除重复项
Bob 从数据表中获取一个不同的有序列表
Marxidad显示了如何对数组进行排序
Dana获得了使用Linq实现快速排序的帮助
GateKiller的问题链接摘要如下:
Scott Guthrie 在他的博客上为Linq提供了一个介绍MSDN
上LINQ的概述
ChrisAnnODell建议退房:
我已经编程了一段时间并且之前使用过LINQ-To-SQL和LINQ-To-Entities(尽管在使用实体时它已经处于实体/表1-1关系 - 即与L2SQL没有太大区别)
我一直在阅读有关控制反转,工作单元,POCO和存储库模式的大量阅读,并希望在我的新应用程序中使用此方法.
我正在努力的是为EF4寻找一个清晰,简明的初学者指南,该指南不承担EF1的知识.
我需要回答的具体问题是:
代码优先/型号第一?关于EF4的优点/缺点(即如果我先编码,在以后更改代码并需要重新生成我的数据库模型会发生什么 - 数据是否会被保留,转换或丢弃?)
假设我要进行代码优先(我想看看EF4如何将其转换为数据库模式)我该如何实际开始?我经常看到有实体图表的文章说"所以这是我的实体模型,现在我要去..." - 不幸的是,我不清楚他们是否在设计师中创建了模型,将其保存到生成代码然后停止任何进一步的自动代码生成 - 或 - 他们编码(POCO)?类和不知何故将它们导入到deisgner视图中?
我想我真正需要的是理解"魔法"来自何处,以及如果我不是直接从DB生成EF模型,如何自己添加它.
我知道这个问题有点模糊,但我不知道我不知道 - 所以任何输入/更正/澄清都会受到赞赏.
毋庸置疑,我不希望有人坐在这里教我EF - 我只是喜欢一些好的教程/论坛/博客/等.对于完整的实体新手
我知道LINQ to Entities和LINQ to Objects的一些区别,第一个实现IQueryable
和第二个实现IEnumerable
,我的问题范围在EF 5中.
我的问题是这3种方法的技术差异是什么?我看到,在许多情况下,所有这些都有效.我也看到使用它们的组合.ToList().AsQueryable()
.
这些方法究竟意味着什么?
是否有任何性能问题或某些因素会导致使用另一个?
例如,为什么会使用?.ToList().AsQueryable()
而不是.AsQueryable()
?
linq-to-entities entity-framework entity-framework-4 entity-framework-5
我有网络搜索但我仍然无法找到一个简单的答案.有人可以解释(用简单的英文)是什么GroupJoin
?它与普通的内心有什么不同Join
?它常用吗?它只适用于方法语法吗?查询语法怎么样?一个c#代码示例会很好.