私は奇妙な問題に直面しています。ユーザーが自分のWebアプリケーションの任意のページにアクセスしたときには、 にアクセスする権限があるかどうかを確認し、初めてアクセスする場合は試用期間を提供します。ここでEF Count()> 0しかしFirst()例外をスローする
は、コードの私の作品です:
ここList<string> temp_workers_id = new List<string>();
...
if (temp_workers_id.Count > 6)
{
System.Data.SqlTypes.SqlDateTime sqlDate = new System.Data.SqlTypes.SqlDateTime(DateTime.Now.Date);
var rusers = dbctx.tblMappings.Where(tm => temp_workers_id.Any(c => c == tm.ModelID));
var permissions = dbctx.UserPermissions
.Where(p => rusers
.Any(ap => ap.UserID == p.UserID)
&& p.DateStart != null
&& p.DateEnd != null
&& p.DateStart <= sqlDate.Value
&& p.DateEnd >= sqlDate.Value);
if (permissions.Count() < 1)
{
permissions = dbctx.UserPermissions
.Where(p => rusers
.Any(ap => ap.UserID == p.UserID)
&& p.DateStart == null
&& p.DateEnd == null);
var used = dbctx.UserPermissions
.Where(p => rusers
.Any(ap => ap.UserID == p.UserID)
&& p.DateStart != null
&& p.DateEnd != null);
if (permissions.Count() > 0 && used.Count() < 1)
{
var p = permissions.First();
using (Models.TTTDbContext tdbctx = new Models.TTTDbContext())
{
var tp = tdbctx.UserPermissions.SingleOrDefault(tup => tup.UserID == p.UserID);
tp.DateStart = DateTime.Now.Date;
tp.DateEnd = DateTime.Now.Date.AddDays(60);
tdbctx.SaveChanges();
}
First()
メソッドが例外をスロー:
シーケンスはそれも可能性がどのように要素
が含まれていませんか?
EDIT: ユーザーが2つのブラウザを開いて同時に移動するとは思えませんが、並行性の問題がありますか?
morcodeを入力してください。パーミッションとは何ですか? –
あなたは許可抽出でDefaultIfEmptyを使用していますか? –
多くのコードが追加されました、いいえDefaultIfEmpty – okarpov