私のアプリケーションでEntity Framework Code FirstとSQL Serverを使用しています。 私のコードの1つの場所で、私は単にデータベースにデータを挿入しようとしました。 私は単にによって設定された私のオブジェクトに追加SQL Server Entity Frameworkの挿入が機能しない
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プロファイラを使用して見ました
、その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
アイデンティティであるがインクリメントされましたが、何の行が挿入されませんでした。 私はこのSQLコマンドをMicrosoft SQL Management Studioから手動で呼び出しましたが、すべてが正常にDbにコミットされましたが、Idは予想以上の大きさでした。
もちろん、コードの他の部分に他のエンティティを挿入することに問題はありません。
誰もがこのような問題を以前見たことがある場合は、この問題の原因を教えてください。
すべてのヘルプは非常に高く評価されるだろう:)
EDIT:
- をCarIdは、外部キーであり、この表の唯一の依存関係です。
- DrivingStatisticTypeは列挙型です。
- EntityFrameworkは
- Entity Frameworkのは、それらの行を再挿入するをしようとしていない任意の例外をスローしませんでした。
- 誰が、なぜ、いくつかの状況でそれを知っている場合、私はそれが
foreach(var entity in data) { _objectSet.Add(entity); unitOfWork.SaveChanges(); }
に
foreach(var entity in data) _objectSet.Add(entity); unitOfWork.SaveChanges();
を変更することで動作するようにします。しかし、これらのインサート
IDの大きな増加は、データベース内のトランザクションまたはデッドロックの問題のヒントになる可能性があります。 Management Studioを使用して成功した場合、dbもプロファイルしましたか?要求が最初の試行で成功したのですか、または再試行がありましたか? Entity FrameworkまたはSQLクライアントが例外をスローしましたか? – Patrick
dbサーバーのイベントビューアーを調べましたか?多分あなたはそこにいくつかのヒントを見つけることができます。 – Patrick
コレクションではなくレコードを1つだけ挿入しようとしましたが、 'Car'と' DrivingStatisicType'のプロパティに値が設定されて挿入されていますか? – Scrobi