Tag: sql server

entity framework查询中string.Trim()的行为

我正在尝试将名称列表复制到SQL Server表中,为此我有一个Entity Framework项目设置。 名称列表具有重复值,并且几个名称的末尾有空格。 我希望只插入表中尚未包含的名称,以及从它们的末尾修剪空格。 看起来相当简单吧? 我的解决方案是: if (!context.Names.Any(n => n.Value == nameToCopy.Trim()) context.Names.Add(nameToCopy.Trim()) NB。 这不是我的确切代码,只是一个例子,所以不必提及我正在修剪两次! 令我惊讶的是,上述方法并不像我预期的那样有效。 我在发现上述语句时发现, if (!context.Names.Any(n => n.Value == nameToCopy.Trim())实际上并不查询nameToCopy的修剪版本 – 几个查询过的名称他们的结尾有空格。 但是,如果我执行以下操作,则按预期工作: string trimmedName = nameToCopy.Trim() if (!context.Names.Any(n => n.Value == trimmedName) context.Names.Add(trimmedName) 任何人都可以解释为什么第一个解决方案不在数据库查询中使用剪裁版本的字符串? 谢谢

如何从XML模式创建SQL Server表模式? (使用.NET和Visual Studio 2008)

我有一个XML模式,我知道“xsd.exe”可以为它生成C#代码。 但我想知道是否可以借助此工具或其他工具从XSD自动创建MS SQL Server 2005+表。 顺便说一下,我没有得到“xsd.exe”生成的C#代码值得的东西。 CodeXS和xsd.exe生成的代码之间有什么区别?

在数据库中存储大型文件会导致类型为“System.OutOfMemoryException”的exception

我已经构建了一个小型MVC4网站,用于使用代码优先方法共享文件。 这些文件存储在我的数据库中 public byte[] Content { get; set; } 我设定了 和 要将文件大小限制为500 Mb,以便文件实际上将其放入我的代码中(先将其置于此位置)。 当我收到文件并尝试将其保存到数据库时,实际问题就出现了,我称之为: DbContext.SaveChanges() 并得到此错误: System.Data.Entity.dll中出现“System.OutOfMemoryException”类型的exception,但未在用户代码中处理 我猜这是因为我在数据库中的byte []中存储了多少数据(或者我的进程允许使用多少内存),因此我遇到了某种限制。在上传较小的文件时,一切都有效。 数据库服务器是SQL 2008 R2 Standard服务器。 为了简单起见,我宁愿避免将文件存储在磁盘上。我的选择是什么? 编辑:使用直接SQL查询插入文件的建议让我超过了将文件导入数据库的第一个问题: DbContext.Database.ExecuteSqlCommand( @”UPDATE FileContents SET Content = @data WHERE ID = @id”, new SqlParameter(“id”, content.ID), new SqlParameter(“data”, bytearray)); 但是,当我尝试将文件从数据库中取出时,我现在得到完全相同的错误。 这会导致错误: byte[] respdata = DbContext.Database.SqlQuery (“SELECT TOP 1 Content FROM FileContents WHERE […]

如何在OrmLite ServiceStack中增加命令超时?

我正在使用ServiceStack OrmLite SqlServer v3.9.71并具有以下连接字符串: 并使用以下命令运行查询,需要2-3分钟才能返回: using (Db) { var result = new ResultDto(); Parallel.Invoke( () => { result.StatOne = Db.Dictionary(query1); }, () => { result.StatTwo = Db.Dictionary(query2); } ); return result; } 当在Db对象上设置断点时,我可以看到连接超时为666但我无法弄清楚如何设置/增加命令超时每次运行上面它超过30秒后超时这是默认超时。 有任何想法吗?

构建动态SQL查询的最佳实践

我正在寻找一些提示和技巧如何构建动态查询。 我有一个应用程序,它允许用户搜索数据库表中的10个字段。 根据UI中哪些字段填充值,查询应在DB中的其他字段中搜索。 目前我正在尝试使用StringBuilder构建查询并添加where子句但我真的不喜欢这个,我想知道是否有更好的方法来做到这一点,例如使用LINQ,如果可能的话。 也许有人可以提出想法或更好的一些示例代码。 感谢,并有一个愉快的一天!

通过.net中的SqlTransaction禁用对表的读/写?

如何在.net 2.0中使用SqlTransaction,以便当我开始从表中读取数据时,该表被阻止其他人(其他程序)读取/写入该表? 如果SqlTransaction不是一个好的选择,那是什么?

查询嵌套数据的有效方法

我需要从表中选择一些“主”行,并为每个结果返回另一个表中的许多详细信息行。 在没有多个查询的情况下实现此目的的好方法是什么(一个用于主行,一个用于获取详细信息行)。 例如,使用如下所示的数据库结构: MasterTable: – MasterId BIGINT – Name NVARCHAR(100) DetailTable: – DetailId BIGINT – MasterId BIGINT – Amount MONEY 我如何最有效地填充下面的data对象? IList data; public class Master { private readonly List _details = new List(); public long MasterId { get; set; } public string Name { get; set; } public IList Details { get { return […]

错误 – 具有多个数据库连接的LINQ / TransactionScope

我有一个helluva时间将几个事务包装到同一个SQL Server上的两个不同的数据库。 我最初遇到网络DTC访问问题,我解决了这个问题。 现在,我继续得到的错误是“与底层事务管理器的通信失败了”。 我们在数据库中有一些客户配置文件,当这些配置文件过时时,我们希望将它们移动到“存档”数据库进行存储。 此举简单(幽默斜体)将它们添加到存档数据库并从主/实时数据库中删除它们。 我为每个数据库都有一个DataContext。 下面的代码执行Add,然后在尝试使用第二个DataContext时在Delete上获取错误。 我只和LINQ合作了几个月,过去几天我一直在搜索文章。 我想知道我的代码是否有任何问题,或者是否仍然没有正确配置DTC或??? 我们在VMware上运行我的工作站和服务器。 – 工作站是Windows 7 SP1 – 服务器是Windows和SQL Server 2008R2 “移动”的常规: private int MoveProfileToArchiveDB( int iProfileId ) { int rc = RC.UnknownError; // get new Archive profile object ProfileArchive.ProfileInfo piArchive = new ProfileArchive.ProfileInfo(); // ‘Live’ DataContext using ( ProfileDataContext dbLive = new ProfileDataContext() ) { // […]

如何安全地将Hangfire重置为干净状态?

我有一个安装了Hangfire的服务器。 我有一段时间没有检查它,似乎一个重复的工作已经流氓。 它停止工作,然后它重叠了重试,导致看起来完全锁定。 我想清除我的数据库并重新开始。 我可以删除所有表中的数据,还是应该删除表,让Hangfire为我重新创建它们? 这样做会冒任何风险吗? Hangfire.State使用整个Azure Basic数据库2GB的空间。

结合几个DbGeography多边形

我正在寻找组合几个多边形以减少点数的方法。 这将是前进的方向: var pol1 = DbGeography.PolygonFromText(“POLYGON ((-2.91790532309701 53.3657440952224, -2.91790532309701 53.3567508791632, -2.90283703655041 53.3567508791632, -2.9028338560513 53.3657440952224, -2.91790532309701 53.3657440952224))”, 4326); var pol2 = DbGeography.PolygonFromText(“POLYGON ((-2.90283703655041 53.3657440952224, -2.90283703655041 53.3567508791632, -2.88776875000381 53.3567508791632, -2.88776556950469 53.3657440952224, -2.90283703655041 53.3657440952224))”, 4326); var pol3 = DbGeography.PolygonFromText(“POLYGON ((-2.91641048851245 53.3747373112816, -2.91641048851245 53.3657440952224, -2.90133902146673 53.3657440952224, -2.90133583925323 53.3747373112816, -2.91641048851245 53.3747373112816))”, 4326); var combined = (pol1.Union(pol2)).Union(pol3); 基本上,如果多边形相互接触,我希望将它们组合起来。 不相交的多边形应保持不相交。 目前我不确定Union是否与TSQL函数STUnion()达到相同的效果。 PS:我只是在TSQL中运行STUnion并注意到它也没有产生预期的结果(即联合包含组合多边形内的点)。