eğer deyimi (ler) binded ediliyor nesnesinin bir özelliği veritabanında zaten bir kayıt ile eşleşirse sadece yürütmek gerekir: TemeldeŞartlı Bildirimi her zaman True
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,AID,Date,PostPreID")] OL oLevel)
{
if (ModelState.IsValid)
{
if(oLevel.PostPreID == 2)
{
if (db.OL.Any(x => DbFunctions.TruncateTime(x.Date) == DbFunctions.TruncateTime(oLevel.Date) && x.PostPreID == oLevel.PostPreID))
{
ModelState.AddModelError("PostPreID", "There is already a record for this Date!");
return View(oLevel);
}
else
{
db.OL.Add(oLevel);
db.SaveChanges();
return RedirectToAction("Index", new { id = oLevel.AID });
}
}
if(oLevel.PostPreID == 3)
{
if (db.OL.Any(x => DbFunctions.TruncateTime(x.Date) == DbFunctions.TruncateTime(oLevel.Date) && x.PostPreID == oLevel.PostPreID))
{
ModelState.AddModelError("PostPreID", "There is already a record for this Date!");
return View(oLevel);
}
else
{
db.OL.Add(oLevel);
db.SaveChanges();
return RedirectToAction("Index", new { id = oLevel.AID });
}
}
db.OL.Add(oLevel);
db.SaveChanges();
return RedirectToAction("Index", new { id = oLevel.AID });
}
return View(oLevel);
}
, bir Kullanıcı, PostPreID
'un belirli bir tarih için 2'ye eşit olduğu bir kayıt ekleyememelidir. Aynı mantık PostPreID
ben debug gelmiş 3.
eşittir ve ben veritabanı kayıtları içermez biliyorum tarihlerde PostPreID
hem 2 ve 3'te girildiğinde için de geçerli, ama deyim içeren eğer nedense iç içe .Any yöntemi her zaman doğru olarak çözülür.
Herhangi bir yardım için teşekkür ederiz.
'DbFunctions.TruncateTime''in doğru olduğundan emin misiniz? Ayrıca, bu hata ayıklamak için, 'db.OL.FirstOrDefault' işlevini çağırın ve beklemediğiniz bir kaydı görmek için aynı ifadeyi iletin. – David
"DbFunctions.TruncateTime" –
@DavidPine için kaynak kodunu paylaşın https://msdn.microsoft.com/en-us/library/dn220142(v=vs.113).aspx – juharr