草庐IT

SQL的多表查询

全部标签

c# - LINQ 和 Entity Framework - 避免子查询

我真的很难在我的应用程序中调整我的EntityFramework生成的查询之一。这是非常基本的查询,但出于某种原因,EF使用多个内部子查询,这似乎在DB中执行得很糟糕,而不是使用连接。这是我的LINQ代码:Projects.Select(proj=>newProjectViewModel(){Name=proj.Name,Id=proj.Id,Total=proj.Subvalue.Where(subv=>subv.Created>=startDate&&subv.Createdc.SubValueSum).DefaultIfEmpty().Sum()}).OrderByDescend

c# - 为什么在使用 foreach 时不执行此 LINQ 查询?

在LINQ语句中创建新对象时,例如:varlist=newList(){"a","b","c"};varcreated=fromiinlistselectnewA();A类看起来像这样:classA{publicstringLabel;}然后使用foreach循环修改A中的属性:foreach(varcincreated){c.Label="Set";}为什么之后访问IEnumerable中的对象时没有设置值。例如。以下断言失败:Assert.AreEqual("Set",created.ElementAt(2).Label);我想知道为什么会这样。我希望foreach语句执行查询,并

c# - Entity Framework 中是否有一个函数可以转换为 SQL 中的 RANK() 函数?

假设我想按国家/地区对我的客户数据库进行排名。在SQL中我会写:selectCountryID,CustomerCount=count(*),[Rank]=RANK()over(orderbycount(*)desc)fromCustomer现在我想在EntityFramework中写这个:varranks=db.Customers.GroupBy(c=>c.CountryID).OrderByDescending(g=>g.Count()).Select((g,index)=>new{CountryID=g.Key,CustomerCount=g.Count,Rank=index+1

c# - 如何使用 Sql CE 4 数据库进行功能测试

由于Linq-to-Entities(EF4)和Linq-to-Objects之间的潜在差异,我需要使用实际的数据库来确保我的查询类正确地从EF检索数据。SqlCE4似乎是完美的工具,但是我遇到了一些小问题。这些测试使用的是MsTest。我遇到的问题是,如果数据库没有被重新创建(由于模型更改),数据会在每次测试后不断添加到数据库中,而不会删除数据。这可能会导致测试冲突,查询返回的数据多于预期。我的第一个想法是在TestInitialize方法中初始化一个TransactionScope,并在TestCleanup中处理事务。不幸的是,SqlCE4不支持事务。我的下一个想法是通过File

c# - 从 MVC3 中的查询字符串中删除一个值并重定向到生成的 URL

我正在处理一个看似简单的问题:在我的授权过滤器中,如果不满足其中一个条件,我会检查一些事情,我需要从查询字符串中删除某些值并将用户重定向到结果URL。但是,这给我带来了比我想要的更多的问题。它看起来像这样:publicvoidOnAuthorization(AuthorizationContextfilterContext){if(!SomeCondition()){RedirectToCleanUrl(filterContext);}}在我的RedirectToCleanUrl中,我正在剥离查询字符串并尝试将它们重定向到新的url。它看起来像这样:privatevoidRedirec

c# - SQL Server 管理对象 (SMO) 的默认约束不一致

我有一个程序可以使用SQLServer管理对象(SMO)为MicrosoftSQLServer数据库生成DDL脚本。但是,根据服务器和数据库,我收到表的默认约束输出不一致。有时它们与CREATETABLE语句内联,有时它们是独立的ALTERTABLE语句。我意识到两者都是有效且正确的SQL语句,但如果没有一致性,它会阻止多个数据库的输出之间的自动比较,并阻止将输出添加到源代码管理以跟踪数据库模式的更改。如何确保默认约束的脚本输出的一致性?示例程序代码应该简单明了。打开服务器和数据库,然后为每个数据库对象生成单独的脚本文件,再加上一个包含整个数据库脚本的文件。我省略了很多似乎已经生成一致

c# - 如何将数据从 Sql 对象复制到 C# 模型属性

我有两个表:员工:Id、姓名、DepartmentId部门:Id,姓名员工.cs:publicintId{get;set;}publicstringName{get;set;}publicintDepartmentId{get;set;}部门.cs:publicintId{get;set;}publicstringName{get;set;}View模型:EmployeeDepartmentVM:publicDepartmentdepartment{get;set;}publicListemployees{get;set;}为了连接这两个表,我编写了这段代码:SELECTE.*,D.I

c# - SQL Server 将 SP_EXECUTESQL 识别为对象而不是过程名称

我正在使用DBContext.Database.SqlQuery从我的C#代码存储库执行存储过程。它工作正常,但我想知道为什么它会执行如下程序:execsp_executesqlN'EXECGetCaseList@CaseStage',N'@CaseStageint',@CaseStage=9而不是EXECGetCaseList@CaseStage=9有什么方法可以像这样从C#执行我的所有过程EXECGetCaseList@CaseStage=9而不是execsp_executesqlN'EXECGetCaseList@CaseStage',N'@CaseStageint',@Case

c# - 将在 C# 中创建的哈希与 sql 匹配

我有一个用于生成散列的方法:publicstaticstringGetMD5Hash(stringinput){System.Security.Cryptography.MD5CryptoServiceProviderx=newSystem.Security.Cryptography.MD5CryptoServiceProvider();byte[]bs=System.Text.Encoding.UTF8.GetBytes(input);bs=x.ComputeHash(bs);System.Text.StringBuilders=newSystem.Text.StringBuilde

c# - Linq 多重 where 查询

我在构建相当繁重的linq查询时遇到了问题。基本上我有一种情况,我需要在循环中执行子查询以过滤掉从数据库返回的匹配项的数量。示例代码在下面的循环中:foreach(GuidparentinparentAttributes){varsubQuery=fromscindb.tSearchIndexesjoinaindb.tAttributesonsc.AttributeGUIDequalsa.GUIDjoinpcindb.tPeopleIndexesona.GUIDequalspc.AttributeGUIDwherea.RelatedGUID==parent&&userId==pc.CP