我想找到一个最快的方法来获得一个表中的列的最小值和最大值,其中只有一个Linq to SQL往返.所以我知道这将在两个往返中起作用:
int min = MyTable.Min(row => row.FavoriteNumber);
int max = MyTable.Max(row => row.FavoriteNumber);
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用,group但我没有group by条款,我想聚合整个表格!如果没有分组,我就不能使用.Min.我试过这个:
from row in MyTable
group row by true into r
select new {
min = r.Min(z => z.FavoriteNumber),
max = r.Max(z => z.FavoriteNumber)
}
Run Code Online (Sandbox Code Playgroud)
但是这个疯狂的组子句似乎很愚蠢,而它所做的SQL比它需要的更复杂.
那么,有没有办法只是得到正确的SQL?
编辑:这些家伙也失败了:Linq to SQL:如何在没有小组的情况下聚合?......如果真的没有答案,LINQ设计师的疏忽.
编辑2:我在SQL Server Management Studio执行计划分析中查看了我自己的解决方案(使用无意义的常量group by子句),它在我看来它与生成的计划完全相同:
SELECT MIN(FavoriteNumber), MAX(FavoriteNumber)
FROM MyTable
Run Code Online (Sandbox Code Playgroud)
因此,除非有人能够提出一个更简单或同样好的答案,我想我必须将其标记为自己回答.思考?
我正在尝试使用和理解EF迁移(使用EF 4.3.1,Code First).为了支持一个新的变化,我必须使用这样的命令:
Add-Migration MyMigration
-ConnectionString "Data Source=.;Initial Catalog=mydb;"
-ConnectionProviderName "System.Data.SqlClient"
-StartUpProjectName MyWebsite
-ProjectName MyEF.Migrations
Run Code Online (Sandbox Code Playgroud)
为什么Add-Migration需要连接字符串数据? Update-Database需要一个,这是有道理的.但是,Add-Migration是否具有DbContext和Configuration所需的一切?
这不仅仅是空闲的奇迹,给它一个数据库是非常困惑的,因为我们有一个"多租户"的东西,所需的数据库是灵活的,可能会从请求变为请求,更不用说在静态编译时.因此,如果Add-Migration实际上正在使用该数据库,我们就会遇到问题.
更新:我们放弃了EF迁移并改为使用Fluent Migrator,并且很高兴.它更快,更快,甚至计算我们必须写两次事物(一次用于EF对象,一次用于迁移),并且它没有在这个问题中讨论的问题.
我正在使用EF 4.1 Code First布局一个新的数据层,从较旧的自制数据层迁移.
我已经设置了两个程序集,一个用于我的上下文,一个用于所有POCO代码的第一个类.
我有一些业务逻辑,例如,对一个表(或几个表)的查询,这些表在几个不同的地方使用. 我应该把它放在哪里?
它不能进入POCO类,因为它连接了几个表,因此需要一个上下文.它可能会进入上下文,但是上下文会因数百个无组织的查询而变得臃肿. 所有业务逻辑都有共同的模式或安排吗?
我有一个非常狭窄的表:user_id,ancestry.
user_id列是自解释的.
祖先列包含用户祖先欢呼的国家/地区.
用户可以在表上有多行,因为用户可以拥有来自多个国家/地区的祖先.
我的问题是:如何选择其祖先来自多个指定国家/地区的用户?
例如,向我展示所有拥有来自英格兰,法国和德国的祖先的用户,并返回符合该标准的每个用户1行.
什么是SQL?
user_id ancestry
--------- ----------
1 England
1 Ireland
2 France
3 Germany
3 Poland
4 England
4 France
4 Germany
5 France
5 Germany
Run Code Online (Sandbox Code Playgroud)
在上述数据的情况下,我预计结果为"4",因为user_id 4具有来自英格兰,法国和德国的祖先.
提前致谢.
PS澄清:是的,user_id/ancestry列创建一个唯一的对,因此不会为给定用户重复一个国家/地区.
PPS我在寻找来自3个国家的用户 - 英格兰,法国和德国(以及这些国家是任意的).
PPPS我不是在寻找特定于某个RDBMS的答案.我想"一般地"回答这个问题.
我满足于为每个查询重新生成where子句,前提是可以通过编程方式生成where子句(例如,我可以构建一个函数来构建WHERE/FROM - WHERE子句).
有(至少)三种方式链接到资源:
href="foo/bar.html"href="/foo/bar.html"href="http://example.com/foo/bar.html"第一个是"相对网址",没问题.但我看到(2)和(3)都被称为"绝对网址".这被正确地称为"绝对网址",另一个的正确名称是什么?
(参考相关标准或其他官方文件的奖励积分.)
我知道大多数运营商的名字,但不知道什么operator<<和operator>>被称为.
即
operator=() // the assignment operator
operator==() // the equality of comparison operator
operator++() // the increment operator
operator--() // decrement operator etc.
operator<() // the less-than operator
Run Code Online (Sandbox Code Playgroud)
等等......
指定CurrentCulture或InvariantCulture而不指定文化的最佳做法是什么?
例如,根据我的阅读,如果您正在进行序列化,则需要使用InvariantCulture作为指定数据值的规范表示的方法.这是基于文化的字符串操作的相对较小的百分比.
我发现它很长,很冗长,而且大部分时间都是丑陋的,每次我都说出来,比如说:
var greeting = string.Format(CultureInfo.CurrentCulture, "Hello ", userName);
Run Code Online (Sandbox Code Playgroud)
然而,我的团队最近开启了FxCop,现在总是在每个地方都使用CultureInfo.结合简洁性,可读性和功能性的最佳技术是什么?
一些好的阅读材料:
可能重复:
代码优先:独立关联与外键关联?
在EF 4或EF 5 Code First中,什么是"独立关联"以及什么是MSDN或外键与独立关系上使用的"外键关联" - 实体框架5有哪些改进?(重点补充):
2.4.1使用外键关联降低视图生成成本
我们已经看到了一些案例,其中模型中的关联从独立关联切换到外键关联 大大改善了视图生成所花费的时间.
所以 - 现在我知道要使用哪个.只要我知道它们是什么以及如何转换成它!那么我的问题是,您如何定义这些条款?什么流利/注释/约定调用每个?
随着.NET 3.5和IQueryable<T>界面的引入,将出现新的模式.虽然我已经看到了规范模式的许多实现,但我还没有看到使用这种技术的许多其他模式.Rob Conery的Storefront应用程序是另一个使用IQueryable<T>它可能导致一些新模式的具体示例.
有用的IQueryable<T>界面出现了什么样的模式?
我正在寻找一个XSLT或命令行工具(或者可以作为命令行工具的C#代码等),用于执行XML漂亮打印的Windows.具体来说,我想要一个能够将属性一对一地放置的东西,例如:
<Node>
<ChildNode
value1='5'
value2='6'
value3='happy' />
</Node>
Run Code Online (Sandbox Code Playgroud)
它不一定非常像,但我想将它用于一个XML文件,该文件具有包含许多属性的节点,并将它们分布在多行中,使它们更易于阅读,编辑和文本差异.
注意:我认为我的首选解决方案是可以通过C#方法传递的XSLT表,尽管Windows命令行工具也很好.
c# ×3
sql ×2
.net ×1
.net-3.5 ×1
c++ ×1
culture ×1
cultureinfo ×1
iqueryable ×1
linq ×1
linq-to-sql ×1
nomenclature ×1
operators ×1
pretty-print ×1
select ×1
url ×1
xml ×1