kullanarak bir kaydı silme hatası Bir müşteriden kısa bir süre önce bir hata raporu aldım ve çözümü çözemiyorum. Umarım birisi bana neyin yanlış olabileceğine dair bir fikir verebilir.Linq2SQL
Csla.DataPortalException:
hata yeterince basit görünmektedir DataPortal.Delete System.InvalidOperationException (başarısız oldu: Sekans System.Linq.Enumerable.SingleOrDefault [TSource] (IEnumerable`1 kaynağında birden fazla eleman içerir) İşte
bir parametre olarak FileId (PK) alır benim DataPortal_Delete yöntemidir. Ben kontrolprivate void DataPortal_Delete(SingleCriteria<File, Guid> criteria)
{
using (var ctx = ContextManager<Ronin.Data.RoninDataContext>
.GetManager(Database.ApplicationConnection, false))
{
var data = ctx.DataContext.Files
.Single(row => row.FileId == criteria.Value);
ctx.DataContext.FileSources.DeleteAllOnSubmit(data.FileSources);
ctx.DataContext.Files.DeleteOnSubmit(data);
ctx.DataContext.SubmitChanges();
}
}
ilk şey aynı FileID başka kayıt altına alınmasını görmekti (prima olmalarına rağmen anahtar, bu imkansız olmalıdır). Tüm FileIds aslında benzersiz idi. Müşteri veritabanına bağlanan uygulamayı başlattım ve kaydı silmeye çalıştım ve herhangi bir sorun olmadan çalıştı. İstemci sitesindeki BT adamı, kullanıcı tarafından gerçekleştirilen eylemlerin adım adım ekran görüntülerini göndermek için "Sorun Adım Kaydedicisi" ni kullandı. Sıra dışı bir şey değil ve farklı bir makine kullandığında, kaydı hiçbir hata olmadan silebildi. Görünüşe göre bu, uygulama sadece Windows 7'de çalıştırıldığında gerçekleşir.
Bu, buna neyin neden olabileceği ile ilgili herhangi bir fikir mi dedi?
Dosyalar.FileId bu tablonun birincil anahtarıdır? –
Hata bu kod snippet'inde oluşturulduğundan emin misiniz? Hata SingleOrDefault başvuruyor, ancak işlev Tek kullanıyor. – gfrizzle
FileSources Null mı? Bunlar farklı nesneler ise, bunları silmeden önce bunları almak için bir içermek zorunda değilsiniz? – awright18