我在我的應用程序中使用實體框架代碼優先和SQL Server。 在我的代碼的一個地方,我試圖簡單地插入數據到數據庫中。 我已經有了對象的集合像SQL Server實體框架插入不工作
public class DrivingStatistic
{
public int Id { get; set; }
public int CarId { get; set; }
public virtual Car Car { get; set; }
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
public BLL.Consts.DrivingStatisticType Type { get; set; }
public double Value { get; set; }
}
我把它添加到我的設置目的在於通過簡單:
foreach(var entity in data)
_objectSet.Add(entity);
unitOfWork.SaveChanges();
一切正常,在我的本地數據庫,但在遠程服務器上,沒有任何反應。幾乎沒有。
我用SQL Server Profiler中看到,該INSERT命令創建並正確執行,這裏是我的表
exec sp_executesql N'INSERT [dbo].[DrivingStatistics]([CarId], [DateFrom],
[DateTo], [Type], [Value])
VALUES (@0, @1, @2, @3, @4)
SELECT [Id]
FROM [dbo].[DrivingStatistics]
WHERE @@ROWCOUNT > 0 AND [Id] = scope_identity()',N'@0 int,@1
datetime2(7),@2 datetime2(7),@3 int,@4 float',@0=1000,@1='2017-08-25
07:00:00',@2='2017-08-25 08:00:00',@3=4,@4=0
身份遞增,但插入任何行。 我通過Microsoft SQL Management Studio手動調用了此SQL命令,並且所有事情都成功提交給了Db,但是Id的數量比預期的要多,我知道這是Identity以前增加的數字。
當然,在代碼的其他部分插入其他實體沒有問題。
如果有人看到過此類問題,請告訴我可能會導致此問題的原因。
任何幫助將是非常讚賞:)
編輯:
- CarId是外鍵,它是該表中的唯一一個依賴。
- DrivingStatisticType是一個枚舉。
- EntityFramework沒有發現任何異常
- 實體框架是沒有試圖重新插入這些行。
- 沒有什麼在SQL Server日誌那些插入
身份的大增量可能暗示數據庫中的事務或死鎖問題。當通過Management Studio成功完成時,你是否也在分析數據庫?請求是在第一次嘗試中成功還是有重試?實體框架或SQL客戶端是否拋出任何異常? – Patrick
你看過數據庫服務器的事件查看器嗎?也許你可以在那裏找到一些提示。 – Patrick
您是否嘗試過插入一條記錄而不是集合,並且是「Car」和「DrivingStatisicType」屬性的填充和插入? – Scrobi