簡體   English   中英

SQL Server實體框架插入不起作用

[英]SQL Server Entity Framework Insert Not Working

我在應用程序中使用Entity Framework Code First和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,看到插入命令已正確創建並執行,在這里

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日志中沒有關於這些插入的任何內容

我通過改變使它起作用

foreach(var entity in data)
    _objectSet.Add(entity);
unitOfWork.SaveChanges();

foreach(var entity in data)
{
    _objectSet.Add(entity);
    unitOfWork.SaveChanges();
}

但是,如果有人知道為什么在某些情況下無法添加多個行並將它們一起提交,請告訴我。 我真的很好奇這里會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM