2009-03-11 6 views
0

Ich habe vor kurzem einige Probleme mit LINQ2SQL, zuerst von denen, dass ich CRUD Methoden nicht verwenden kann Ich weiß nicht, was mit LINQ ORM ist, kann ich nicht aktualisieren oder löschen einige bereits abgebildete Entität in .dbml, damit ich immer beheben Mit Drop und erneuern Sie die .dbml, aber jetzt noch nicht funktioniert.Probleme mit LINQ

Problem: Entity wird in keinem Fall bereits

System.InvalidOperationException war gefangen Message = "No se puede quitar una entidad que no se ha Asociado."
Source = "System.Data.Linq"
Stacktrace: en System.Data.Linq.Table`1.DeleteOnSubmit (TEntity Einheit) en Resocentro.Informes.PlantillasMedicas.FormPlantilla.elimina (Int32 nro) de D: \ cs_PlantillasMedicas \ Resocentro.Informes.PlantillasMedicas \ Resocentro.Informes.PlantillasMedicas \ FormPlantilla.xaml.cs: línea 54 Innerexception:

PD: LINQ XML PrimaryKey Attribut

Snippet zum Abrufen der Entität:

IsPrimaryKey="true" 

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

Vielen Dank im Voraus!

Antwort

3

Überprüfen Sie, ob für die Tabellen ein Primärschlüssel definiert ist. Wenn Sie dies nicht tun, fügen Sie sie entweder zu den Tabellen hinzu oder wenn Sie dies nicht direkt für den Designer tun können. Linq2sql funktioniert nicht ohne Primärschlüssel, speziell für Updates, die im Hintergrund ignoriert werden können.

Auch abrufen Sie das Objekt, das Sie versuchen, zu löschen, wie:

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

+0

Ich weiß nicht, wie viele Stunden ich auf genau dieses Problem verloren habe - keine Fehlermeldung, keine Ausnahmen, der Code würde gut ausgeführt, aber meine DB hätte keine aktualisierten Werte. Meine Tabellen hatten Auto-Inkrement-IDs, aber ich hatte SQL Server nicht gesagt, dass sie PK's ... still FAIL waren. – Matt