Tag: tsql

从SQLDataReader读取结果时出现无效的强制转换exception

我的存储过程: @UserName nvarchar(64), AS BEGIN SELECT MPU.UserName, SUM(TS.Monday)as Monday //TS.Monday contains float value FROM dbo.MapTask MT JOIN dbo.MapPU MPU ON MPU.ID = MT.MPUID JOIN dbo.TimeSheet TS ON MT.TMSID = TS.ID WHERE MT.StartDate = @StartDate_int and MPU.UserName = @UserName GROUP BY MPU.UserName END 在我的C#代码中 SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { float monday = (float)reader[“Monday”]; // […]

entity framework以错误的顺序插入子对象

题 为什么EF首先在它所依赖的对象(TimesheetActivity)之前插入具有依赖项的子对象(PersonnelWorkRecord)。 还有什么我可以选择纠正这个? ERD(简化) 这是由我直接控制的另一个系统预定义的。 EF设置和保存代码 我不确定我理解为什么/如何entity framework按照它的顺序插入我拥有的对象但是这里是我用来插入父和几个子代的代码。 using (var db = new DataContext(user)) { timesheet.State = State.Added; timesheet.SequenceNumber = newSequenceNumber; this.PrepareAuditFields(timesheet); //To stop EF from trying to add all child objects remove them from the timehseets object. timesheet = RemoveChildObjects(timesheet, db); //Add the Timesheet object to the database context, and save. db.Timesheets.Add(timesheet); result = […]

如何返回Zipcode列表的## Mile Radius内的所有实例

SQL Server 2008添加了一些很酷的新Spacial类型,并为SQL开发人员提供了更强大的操作空间数据的方法,但它仍然让我无法返回,例如,只返回长列表## mile半径范围内的位置拉链(20到15,000个不同的拉链码)。 有一个简单的方法吗? 想到的唯一可能的解决方案似乎有点可怕,因为创建了cartiasian产品,因此计算得非常多…… 我擅长创建CLR SP和函数,如果这有帮助(我认为它会……)。 我不太关心如何找到2点(或地理类型)之间的距离,而不是“在提供的列表中任何一个zipcodes(地理点)的##里程内的给定位置?” 这里的复杂部分是要搜索的拉链列表。 谢谢。

SELECT和UPDATE表,因此Threads没有重叠

说我有下表: ID|Read ——- 1|true 2|false 3|false 4|false …我需要读取最小的ID,其中[Read] == false; 另外,更新我现在已经阅读过了。 因此,如果我执行我的存储过程dbo.getMinID,它将返回ID:2,并更新[Read] – > true。 CREATE PROCEDURE [dbo].[getMinID] ( @QueryID INT OUTPUT ) BEGIN SELECT TOP 1 @QueryID = [ID] from Table UPDATE Table SET [Read] = 1 WHERE [ID] = @QueryID END 问题是我有十(10)个异步线程同时执行dbo.getMinID,我不能让它们在任何情况下选择SAME [ID]。 我担心我的SELECT和UPDATE语句之间执行第二个线程,因此在两个场景中返回[ID]:2。 无论有多少线程对存储过程起作用,我如何确保不会选择/更新同一记录两次? 另外,请记住表CONSTANTLY添加了新行,所以我无法锁定表!

地址匹配密钥算法

我有两个单独的表中的地址列表,略微偏离我需要能够匹配。 例如,可以通过多种方式输入相同的地址: 110 Test St 110 Test St. 110 Test Street 虽然简单,但你可以想象更复杂的场景中的情况。 我正在尝试开发一种能够将上述地址作为关键字匹配的简单算法。 例如。 关键可能是“11TEST” – 110的前两个,测试的前两个和街道变体的前两个。 完整匹配键也将包括前5个邮政编码,因此在上面的示例中,完整键可能看起来像“11TEST44680”。 我正在寻找有效的算法或资源的想法,我可以在开发时考虑这些因素。 任何想法都可以是伪代码或您选择的语言。 我们只关心美国的地址。 事实上,我们只查看来自俄亥俄州和密歇根州的250个邮政编码的地址。 我们也无法访问任何邮政软件,尽管对于具有成本效益的解决方案的想法是开放的(它基本上是一次性使用)。 请注意,这是来自政府来源的初始数据转储,因此有关用户如何清理它的建议对我构建应用程序很有帮助,但我希望能够将地址匹配为最佳状态。尽可能好。

SQL插入一行或多行数据?

我正在使用控制台应用程序将数据插入到MS SQL Server 2005数据库。 我有一个要插入的对象列表。 这里我使用Employee类作为示例: List employees; 我能做的是在这个时间插入一个对象: foreach (Employee item in employees) { string sql = @”INSERT INTO Mytable (id, name, salary) values (‘@id’, ‘@name’, ‘@salary’)”; // replace @par with values cmd.CommandText = sql; // cmd is IDbCommand cmd.ExecuteNonQuery(); } 或者我可以像这样构建一个balk插入查询: string sql = @”INSERT INTO MyTable (id, name, salary) “; int count […]

在LINQ中选择案例

如何将其转换为LINQ? select t.age as AgeRange, count(*) as Users from ( select case when age between 0 and 9 then ‘ 0-25′ when age between 10 and 14 then ’26-40′ when age between 20 and 49 then ’60-100′ else ’50+’ end as age from user) t group by t.age 谢谢!

根据列结合两个列表

我正在使用Linq到Sql的两个列表的联合。 使用List1和List2: var tr = List1.Union(List2).ToList(); 联盟工作正常,但问题是检查每一列并删除我想要的一些行。 所以我想知道是否有一种方法可以执行基于一列的联合,比如说每个列表的id ? 就像是: var t = List1.id.Union(List2.id).ToList(); 这不起作用,但我想知道是否有办法用LINQ或T-SQL做到这一点

将列表插入表

我有这种方法将新公司插入数据库但我有List问题,因为我希望能够为公司插入多个联系人。 有人能帮帮我吗? public static bool AddNewCompany(Company company,List contact , Location local) { // get a configured DbCommand object DbCommand comm = GenericDataAccess.CreateCommand(); // Set the stored procedure name comm.CommandText = “AddNewCompany”; //create new parameter @CompanyName DbParameter param = comm.CreateParameter(); param.ParameterName = “@CompanyName”; param.Value = company.CompanyName; param.DbType = DbType.StringFixedLength; comm.Parameters.Add(param); //create new parameter @CompanyDetail param = […]

在LINQ查询中使用内置的sql函数?

是否可以在LINQ查询中使用像user_name()这样的buillt-in sql函数? 如果没有,我可以使用其他东西吗?