ExecuteSqlCommand超时

时间:2018-04-02 22:22:45

标签: c# sql asp.net entity-framework

in:<input id="tcin"><br>
out:<input id="tcout"><br>
result:<input id="tcresult"><br>

我试图在C#Entity Framework中的数据库表中添加一行,但execute语句在运行之前保持超时。 (好吧,我相信它会停止运行时超时。

我已经尝试了两个插入分离(例如名称和长度)并且两者都有效,但是当它们在一起时它会失败。我也尝试插入一个,然后尝试更新该行,但以同样的方式失败。

1 个答案:

答案 0 :(得分:3)

您的电话需要额外的报价标志。我删除了数字数据类型的那个。

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

话虽如此,你会想到一些问题。 SQL注入首先是最重要的。

我建议您使用实体框架来创建CalendarEvent对象,而不是使用其属性。通过EF Designer创建类后,它应该是这样的:

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();

我也想提一下,不确定你是否有一个自动生成的PK(或者一个)。也觉得它奇怪的是保存场长。使用LEN函数(https://www.techonthenet.com/sql_server/functions/len.php)从SQL中获取它很容易。