C# EXECUTESQL命令超时

C# EXECUTESQL命令超时,c#,sql,asp.net,entity-framework,C#,Sql,Asp.net,Entity Framework,我试图在C#Entity Framework中的数据库表中添加一行,但execute语句在运行之前一直超时。(好吧,我认为是超时,因为它只是停止运行 我分别尝试了两次插入(例如名称和长度),但两次插入都有效,但在一起失败。我也尝试了插入一次,然后尝试更新该行,但以相同的方式失败。您的呼叫需要额外的引号。我删除了数字数据类型的引号 db.Database.ExecuteSqlCommand("INSERT INTO [dbo].[CalendarEvent] (Length, Name) VALU

我试图在C#Entity Framework中的数据库表中添加一行,但execute语句在运行之前一直超时。(好吧,我认为是超时,因为它只是停止运行


我分别尝试了两次插入(例如名称和长度),但两次插入都有效,但在一起失败。我也尝试了插入一次,然后尝试更新该行,但以相同的方式失败。

您的呼叫需要额外的引号。我删除了数字数据类型的引号

db.Database.ExecuteSqlCommand("INSERT INTO [dbo].[CalendarEvent] (Length, Name) VALUES ('" + item.Length + "," + item.Name.Replace("'", "''") + "')");
话虽如此,您还是会想到一些问题,SQL注入是最重要的

我建议您使用实体框架来创建CalendarEvent对象,而不是使用其属性。一旦通过EF设计器创建了类,它应该如下所示:

db.Database.ExecuteSqlCommand("INSERT INTO [dbo].[CalendarEvent] (Length, Name) VALUES (" + item.Length + ",'" + item.Name.Replace("'", "''") + "')");

我还想提到,不确定您是否有自动生成的PK(或一个)。我还认为保存字段长度很奇怪。使用LEN函数()从SQL获取字段长度非常容易。

在这行代码之前,输入
var bob=“INSERT INTO[dbo].[CalendarEvent](长度,名称)值(“+item.length+”,“+item.Name.Replace(“,“+”)”;
bob的值是多少?的可能重复项我觉得您没有在方法-sql insert语句中使用ORM(实体框架)的优势。我建议对实体框架进行一些研究。bob的值是“插入[dbo].[CalendarEvent](长度,名称)值('3,Josh测试')” @mjiwills@JohsFletcher您列出了两列(
Length
Name
),但只插入了其中一列(逗号在引号内)。阅读我提供的链接。或者阅读如何使用EF插入对象。类似于。好的,我已经修复了这一点,现在可以工作了。我还改为使用EF设计器,所以这很重要。此外,需要设置长度,因为它是特定事件类型的长度。
CalendarEvent ce = new CalendarEvent();
context.Entry(ce).State = EntityState.Added; 
ce.Length = item.Length; // I'm assuming this is some number data type.
ce.Name = item.Name; // No replace needed
db.SaveChanges();