繁体   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