LINQ

2009-03-11 23 views
0
ile ilgili sorunlar

Son zamanlarda LINQ2SQL ile bazı sorunlarım var, bunlardan birincisi CRUD yöntemlerini kullanamıyorum çünkü LINQ ORM ile ne olduğunu bilmiyorum, Güncelleştiremediğim veya .dbml'de zaten eşlenen bazı öğelerin silinemediğini her zaman düzeltirim Bu damla ile ve .dbml yenilemek, ama şimdi hala çalışmıyor.LINQ

Sorun: Varlık zaten

System.InvalidOperationException oldu yakalandı Mesaj = "Hayır se puede Piyanodan sonra gitar una entidad que no se ha asociado." Ilişkilendirmek değil
Kaynak = "System.Data.Linq"
StackTrace: System.Data.Linq.Table`1.DeleteOnSubmit (TEntity varlık) tr Resocentro.Informes.PlantillasMedicas.FormPlantilla.elimina (Int32 nro) tr tr D: \ cs_PlantillasMedicas \ Resocentro.Informes.PlantillasMedicas \ Resocentro.Informes.PlantillasMedicas FormPlantilla.xaml.cs \: Línea 54 InnerException:

PD: LINQ XML PrimaryKey Özellik

Varlık almak için Snippet Varlık:

IsPrimaryKey="true" 

    private PLANTILLA getTemplateEntityFromModel(int codigoPlantilla) 
    { 
     using (DB db = new DB()) 
     { 
      PLANTILLA var = db.PLANTILLAs.FirstOrDefault(x => x.codigoplantilla == codigoPlantilla); 
      return var; 
     } 
    } 

Şimdiden teşekkürler!

cevap

3

Lütfen tablolar için tanımlanmış birincil anahtarınız olduğunu kontrol edin. Yapmazsanız, bunları tablolara ekleyin veya doğrudan tasarımcısına yapamazsanız. Linq2sql, özel olarak, sessizce göz ardı edilebilecek güncellemelerde birincil anahtarlar olmadan iyi çalışmıyor. Ayrıca

, size gibi silmeye çalışıyorsunuz varlık alınıyor:

var myEntity = myContext.SomeEntities.Single (e => e.MyId == 1); myContext.SomeEntities.DeleteOnSubmit (myEntity);

+0

Bu sorunla kaç saat kaybettiğimi bilmiyorum - hata iletisi yok, istisna yok, kod düzgün çalışıyor, ancak DB'm güncellenmiş değerler içermiyordu. Masalarım otomatik artışlı kimliğe sahipti, ancak SQL Server'a PK'lerin ... sessiz FAIL olduğunu söylememiştim. – Matt