NHibernate Linq Group By未能在SQL Server中正确分组
我有以下LINQ查询,该查询使用NHibernate对SQL Server支持的存储库... var casesByCaseOwner = this.preGrantDetailRepository.All .Where(x => x.CaseFileLocation.Id == cflId) .GroupBy(x => x.CaseOwner) .Select(x => new StagSummaryForCfItem { Id = x.Key.Id, Description = x.Key.Name, NumberOfCases = x.Count(), UninvoicedNetFee = x.Sum(y => y.UninvoicedNetFee), UninvoicedDisbursement = x.Sum(y => y.UninvoicedDisbursement) }).AsE
0 2023-09-25
编程技术问答社区
让Linq区分大小写
我正在使用vs 2010与linq到SQL和SQL Server2008.我将如何使这种情况敏感 var Groups = from gp in _db.Groups where gp.vcr_GroupName == GroupName select gp; 在这里groupname=abc和groupname=ABC是相同的 解决方案 假设GroupName是字符串,您可以进行简单的字符串比较并忽略案例: var Groups = from gp in _db.Groups where gp.vcr_GroupName.Equals(GroupName, StringComparison.OrdinalIgnoreCase) select gp; 其他解决方案 这不是Linq查询的点. 这是SQL Server 2008中的设
0 2023-09-25
编程技术问答社区
周期性的InvalidCastException和 "服务器恢复交易失败 "与Linq
我在我们的舞台系统上看到了2-3天之后. "服务器无法恢复交易.DESC:39000000EF." (随着DESC:XXX每次增加). 堆栈跟踪显示 System.Data.SqlClient.SqlException: The server failed to resume the transaction. Desc:39000000ef. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParse
0 2023-09-25
编程技术问答社区
LINQ:仅当一个值不是空时才添加where子句
我知道这样的典型方法是这样: IQueryable query = from staff in dataContext.Staffs; if(name1 != null) { query = from staff in query where (staff.name == name1); } 但是,从我们从其他开发人员那里接管的程序中,我们看到了这样的代码: IQueryable query = from staff in dataContext.Staffs; query = from staff in query where (name1 == null || staff.name == name1); 如果这是普通的SQL语句,我肯定会说第二个是不好的做法.因为它在name1为null时在查询中添加了毫无意义的子句. 但是我是Linq的新手,所以我不确定Linq是否不同? 解决方案 您可以像 一样写它 IQueryable query
0 2023-09-25
编程技术问答社区
Linq选择记录的范围
var q = (from Comments in db.tblBlogComments where Comments.blogID == this.ID orderby Comments.date descending select new { Comments.userID, Comments.comment, Comments.date }); 这返回了我所有关联的记录,我如何最好地选择记录#10到#20,以便我不加载任何冗余数据? 解决方案 怎么样: var q = ( from Comments in db.tblBlogComments where Comments.blogID == this.ID orderby Comments.date descending select new { Comments.userID, Comments.comment, Comments.date }).Skip(10).Take
0 2023-09-25
编程技术问答社区
Entity Framework。已经有一个开放的DataReader与此命令相关联。
我正在使用实体框架,有时我会遇到此错误. EntityCommandExecutionException {"There is already an open DataReader associated with this Command which must be closed first."} at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands... 即使我没有进行任何手动连接管理. 此错误间歇性发生. 触发错误的代码(缩短了易于阅读): if (critera.FromDate > x) { t= _tEntitites.T.Where(predicate).ToList(); } else { t= new List(_tEntitites.TA.Whe
0 2023-09-25
编程技术问答社区
为什么这个LINQ比它的SQL对应物慢得多?
i具有以下 linq到SQL 方法,该方法需要过多的时间执行,但其SQL对应物非常简单又快速.我在LINQ部分做错了吗?我只是想返回一些数据以显示,只读数据网格. 我知道,如果该工具不合适,则可以在这里进行SQL调用,但我想了解为什么会有这种不同. 下面是linq,然后是它转储的SQL. public static DataTable GetEnrolledMembers(Guid workerID) { using (var DB = CmoDataContext.Create()) { var AllEnrollees = from enrollment in DB.tblCMOEnrollments where enrollment.CMOSocialWorkerID == workerID || e
0 2023-09-25
编程技术问答社区
阻止LINQ to SQL在插入后执行选择语句
我正在使用Linq到SQL来更新我的数据库.我正在插入很多记录,当我调用submitchanges()时,linq将SQL执行每个对象的插入和选择语句.将对象插入数据库后,我真的不在乎它们更新. 您知道我可以阻止Linq到SQL之后发出SELECT语句吗?这应该使我的应用程序更快. 解决方案 您正在寻找 编辑: 好的,那对您无效.为自己做一些映射黑客! 当我使用一些自动化的主键列插入时,我会得到此SQL: INSERT INTO [dbo].[TableName]( fieldlist ) VALUES (@p0, @p1, @p2, @p3, @p4) SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value] 据我了解您的要求,您不希望选择 尝试1:我去了主要键字段,并将自动生成为false.这引起了SQL异常"当SIDENTITY_INSERT设置为OFF时,表'TablEname'中的身份列无法为身份列插入
0 2023-09-25
编程技术问答社区
权限设计
我的应用程序具有需要为权限设置的内容(即成员/非会员) 我的角色/身份验证设置很好,这不是我的问题.我的问题基本上是在要求为每个对象存储权限的最佳方法.从本质上讲,每个对象都有"来宾"和"成员"角色,而简单"允许"拒绝"权限. 有什么想法吗?该程序使用C#,Linq和MS-SQL 2005. 解决方案 如果要保护资产(文件,数据库行,域实体,文档等),而不是应用程序功能或用户能力,基于角色的安全性不太合适. 一个更好的模型是使用访问控制列表(ACL),就像您从NTFS所知道的那样.您几乎自己说了这一点,因为您需要为每个用户或角色的每个对象分配特定的权限.这就是ACL的作用. 如果您需要保护最终是SQL Server中行的对象,则需要为ACL定义自定义表,因为SQL Server不支持行级权限. 基于这些ACL中的数据,您必须在数据访问组件中实现必要的安全检查. 这里有一些相关的链接,因此答案: 访问在ASP.NET中控制MVC,具体取决于输入
0 2023-09-25
编程技术问答社区
LINQ to SQL实体的列名属性被忽略了,有指南主键
我正在与Linq到SQL的简单实体类合作(SQL Server 2005 SP3 X64). [Table( Name="TBL_REGISTRATION" )] public sealed class Registration : IDataErrorInfo { [Column( Name = "TBL_REGISTRATION_PK", IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert )] public Guid RegistrationID { get; private set; } /* other properties ommited for brevity */ } 这里只有两个有趣的事情: 类和属性名称与表和列名不一样 主要关键是GUID(唯一识别器) 这是桌子的样子: create table dbo.TBL_REGIS
0 2023-09-25
编程技术问答社区
是否可以用linq运行一个查询来搜索一段时期?
问题详细信息: SQL Server 2005; 实体框架4.0. 我只是尝试使用Linq来运行查询一段时间.景象: 我在服务器中具有以下datetime数据: 30/03/2012 12:53:22 30/03/2012 17:23:29 04/04/2012 11:10:14 04/04/2012 19:06:55 我想运行一个查询,该查询将在时间(12:00和20:00)之间返回所有数据,并且查询必须返回我以下数据: 30/03/2012 12:53:22 30/03/2012 17:23:29 04/04/2012 19:06:55 或(11:00和13:00),查询必须返回以下数据: 30/03/2012 12:53:22 04/04/2012 11:10:14 我该如何使用linq?是否有可能(忽略日期,仅使用时间)? 解决方案 var filteredTimes = myContext.MyTable
0 2023-09-25
编程技术问答社区
在Linq To SQL中使用XQuery?
假设我有一个具有XML类型数据列的表.在SQL中,我可以执行以下语句: select top 10 *, Content.value('(/root/item/value)[1]', 'float') as Value from xmltabletest where Content.value('(/root/item/MessageType)[1]', 'int') = 1 结果集仅包含匹配标准的记录,并且将XML值提取到称为"值"的列中.漂亮而简单. 可以用linq到SQL来实现同一件事? 我想让SQL进行繁重的举重,并且仅返回符合我的标准的数据,而不必选择,转移,然后处理可能大量的数据.据我所知,目前不可能,但我认为我应该问. (环境为.NET 3.5,VS2008,SQL Server 2005如果有帮助) 解决方案 我不确定现在是否已经过时了,但是根据 scott guthrie xml datatype
2 2023-09-25
编程技术问答社区
什么是SQL Server Profiler中的 "审计注销"?
我正在运行数据导入(使用C#/Linq),并且自然而然地试图尽可能优化我的查询.为此,我使用SQL Server Profiler在DB上运行跟踪,并由我的跟踪通过我的SQL登录名进行过滤(这是一个可以唯一归因于我的数据导入过程的名称). 奇怪的是,我的大多数SQL语句都非常快:) - 很少有查询甚至突破了1毫秒标记.但是在我所有查询之间间隔是几行,其中事件级为"审核登录"或"审核记录" - "审核记录"的持续时间可以长达一分钟! ! 这与我在进口中使用交易有关的事实有什么关系吗?如果是这样,是否有任何方法可以找到哪些大查询,以便我可以清理这些问题? 解决方案 如果我记得正确,则审核记录的持续时间是连接打开的时间.例如.与命令的速度无关 - 只是登录的时间"登录". 其他解决方案 登录/注销事件与设置/拆除有关. iirc是"时间登录时间",而不是处理其他日志事件的时间. 通常,除非您怀疑连接池管理等问题 批处理的原始时间应该足以诊断实际活动所花
0 2023-09-25
编程技术问答社区
我如何确保Linq to Sql不会覆盖或违反非 | nullable DB默认值?
我有一个带有这些字段的表的SQL Server DB: a bit带有默认值1,NOT NULL. a smalldatetime带有默认值gettime(),NOT NULL. int没有默认值,IDENTITY,NOT NULL. 当我将LINQ生成该表的SQL时,以下情况发生: bit没有特殊待遇. smalldatetime没有特殊待遇. int标记为IsDbGenerated. 这意味着,当我使用Linq到SQL进行插入时,将会发生以下内容: bit将以0的速度发送,覆盖默认值. 对吗? smalldatetime将以非初始化的System.DateTime发送,在SQL Server中产生错误,因为它不会随SQL Server SmallDateTime范围降临. 对吗? IsDbGenerated int不会发送;数据库将生成一个值,然后将Linq到SQL将读回. 我必须做些什么才能使这种情况起作用? 总结:我想要具有D
0 2023-09-25
编程技术问答社区
Linq中的分层数据-选项和性能
我有一些层次结构数据 - 每个条目都有一个ID和(无效的)父条目ID. 我想在给定条目下检索树中的所有条目.这在SQL Server 2005数据库中.我正在用linq询问C#3.5中的SQL. linq to sql不支持公共表格表达式直接.我的选择是用几个LINQ查询组装代码中的数据,或在浮出CTE的数据库上查看. 当数据量变大时,您认为哪个选项(或其他选项)会表现更好? SQL Server 2008的 hierarchyid类型> 解决方案 我将基于CTE设置一个视图和基于表的功能.我的理由是,尽管您可以在应用程序端实现逻辑,但这将涉及通过电线上的中间数据在应用程序中进行计算.使用DBML设计器,视图转化为表实体.然后,您可以将函数与表实体相关联,并调用在数据附件上创建的方法,以得出视图所定义的类型的对象.使用基于表的功能允许查询引擎在构造结果集时考虑您的参数,而不是对事实后视图定义的结果集应用条件. CREATE TABLE [dbo].[hierarch
0 2023-09-25
编程技术问答社区
LINQ to SQL Server 2000:"必须声明变量 '@p0'"
我已经创建了这个简单的linq查询: var result = from invoice in invoiceTable where invoice.Id == 1 select invoice.Document; 它生成此SQL: SELECT [t0].[Document] FROM [Invoice] AS [t0] WHERE [t0].[Id] = @p0 每当我收到此错误时,每当我运行它时: (ODBC) 错误[42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]必须声明变量'@P0'. (OLEDB) 必须声明变量'@p0'. 我记得读过OLEDB和ADO.NET不支持SQL Server 2000上的命名参数.此问题与该问题有关,还是我在做其他问题? 更新1: 这似乎是一个提供商的问题.我使用SQL客户端数
0 2023-09-25
编程技术问答社区
在从数据库加载大块数据时,如何避免OutOfMemoryException?
说,我们有一个具有一些大型text conta的表,该表conta containg jpg-files的二进制数据.任务是从磁盘上的数据库获取这些文件.因此,起初我决定执行以下操作: MyDataContext dc = new MyDataContext(); foreach(ImageTable t in dc.ImageTable.OrderBy(i=>i.Id)) { using (StreamWriter writer = new StreamWriter(new FileStream(string.Concat(t.Name,".jpg"), FileMode.CreateNew), Encoding.GetEncoding(1251))) { writer.Write(t.Data); writer.Close(); } } ,但是一旦桌子有大约20万行,我就得到了一个OutOfMemoryExce
0 2023-09-25
编程技术问答社区
LINQ,跳过,OrderBy,和SQL Server 2000
我正在访问通过使用LINQ到SQL自动生成的数据上下文对象. SQL数据库是SQL Server 2000框.我正在与之合作的课程是SQL视图.我有一个与此相似的陈述: query = _context.OrderDetails .Where(w => w.Product == "TEST") .OrderBy(o => o.DateCompleted) .ThenBy(t => t.LineItemId) .Skip(startRowIndex) .Take(maximumRows); 但是,当跳过的值只是0时,我会得到这个错误: 此提供程序仅在有序查询上支持Skip(),返回的返回的实体或投影,其中包含所有身份列,其中查询是单台(非join)查询,或者是一个独特的,除外,除外,相交,或联合(不是Concat)操作. 我认为在datecomplet和lineItemid之间,行是唯一的,但随后又弹出了.这与这一观点有关吗?
0 2023-09-25
编程技术问答社区
SubSonic3: 方法 "FirstOrDefault "在SQL Server 2000中产生异常
我正在使用SQL Server 2000使用subsonic3. 我对" firstordefault"的方法有问题 - 它总是抛出异常="第1行:近'('." subsonic.linq dll 的语法不正确. 编辑(添加了评论中的代码): InventoryDAL = DAL project name (dll) Inventort= Subsonic3 Gnerated classes Name space WHWarehouses = gnerated object Dim WareH = (From Wh In InventoryDAL.Inventort.WHWarehouses.All _ Where Wh.WarehouseID = 1 ).FirstOrDefault 解决方案 我不知道亚音速,但是Hibernate具有SQL的不同方言,您可以告诉它使用它,可能想看看是否有任何方法告诉它使用SQL 2000 的方言 其他解决方案
0 2023-09-25
编程技术问答社区
如何显示特定类别的前5个产品
我想在特定类别下获取前5个最受欢迎的产品 Computer . 这是我的类文件: public partial class Category { public int Id { get; set; } public string Name { get; set; } public int ParentCategoryId { get; set; } //reference to Id public ICollection _subcategories; } public partial class ProductCategory { public int Id { get; set; } public int ProductId { get; set; } public int CategoryId { get; set; }
0 2023-09-25
编程技术问答社区