ここで私はSQLと私は30000以上の行が私のテーブルにを持ってLinqに取り組んでいます。ロック時にトランザクション(プロセスID 56)がデッドロックされましたか?
私は、データベースからレコードをフェッチするためのクエリを次のように使用:
IEnumerable<DealsDetails> DD = (from D in DealDbContext1.Deals
where D.Address == City && (D.DealTime >= DateTime.Now || D.DealTime == dealcheck) && PriceMax >= D.DealPrice && D.DealPrice >= PriceMin && DisCountMax >= D.SavingsRate && D.SavingsRate >= DiscountMin && (D.DealTime >= DateTime.Now.AddDays(TimeMin) && D.DealTime <= DateTime.Now.AddDays(TimeMax) || D.DealTime == dealcheck)
select new DealsDetails(
lst,
D.DealId,
D.DealHeadline,
D.DealCategory,
D.BuyPrice,
D.DealPrice,
D.SavingsRate,
D.SavingAmount,
D.RelatedWebsite,
D.Address,
string.Empty,
D.DealImage,
string.Empty,
string.Empty,
D.Time, D.CurrentTime, D.DealTime,
D.Location, string.Empty, string.Empty, D.Latitude, D.Longitude, D.Islocal, D.VendorMail, D.MerchantInfo, D.Review, D.HowItWork, D.DealUrl
));
if (lstSite.Count > 0 && lstSite[0] != "AllDeals")
{
DD = DD.Where(D => D.RelatedWebsite.Split(',').Where(x => lstSite.Contains(x)).Any()); //.Where(row => row.Category.ToList().Where(x => lst.Contains(x)).Any()).ToList();
}
いくつかの時間を私のクエリを正常に実行または私が得たいくつかの時間エラー:トランザクション(プロセスID 56)がロックにデッドロックされました|他のプロセスとの通信バッファリソースがデッドロックの犠牲者として選択されました。トランザクションを再実行します。それは、このようなを持っている場合 -
SQL Serverのエラーログにデッドロックエントリがあります。投稿できますか?そうでない場合は、[traceflag 1204または1222](http://msdn.microsoft.com/en-us/library/ms178104.aspx)をオンにします。 – Andomar
クエリの実行時間はどのくらいですか? – RobJohnson
どのバージョンのSQL Serverですか? [2008年にデフォルトの拡張イベントセッションからデッドロックグラフを取得できるかどうかを確認する](http://dba.stackexchange.com/questions/10644/deadlock-error-isnt-returning-the-deadlock-sql/10646#10646 )。それ以外の場合は、この次回のキャプチャを設定します。 –