2016-06-13 6 views
-1

Ich versuche, Datensätze zu aktualisieren und Änderungen in der Datenbank zu speichern, und es scheint als könnte ich nicht, weil ich meine Liste nicht erhalten kann. Entschuldigung wenn meine Frage nicht klar ist.Hinzufügen von Elementen zu einer vorhandenen Liste mit AddRange

Lassen Sie mich wissen, ob es anders geht.

List<ClaimHistoryModel.ClientLog> ClaimLogs = new List<ClaimHistoryModel.ClientLog>(); 
using (SidDbContext db = new SidDbContext()) 
    { 
     var oldClaim = db.Client.FirstOrDefault(x => x.ClaimId == clientModel.ClaimId); 

     oldClaim.CellNumber = clientModel.CellNumber; 

     ClaimLogs = GetClaimLog(db); //here am getting a method which update the Logtbl.(all the changes will be saved) no error on this funstion 
     //it works if i save changes here but it won't update the history table which shows the fieds before and after.    
     db.claimAudit.AddRange(ClaimLogs); Error here 
     db.SaveChanges(); 
    } 

Am immer diese Fehlermeldung:

Cannot convert from System.Collections.Generic.List<ClaimHistoryModel.ClientLog> to System.Collections.Generic.IEnumerable<claimAudit>

+1

Der Fehler scheint ziemlich klar. Sie versuchen, eine Auflistung von 'MyModel'-Elementen zu einer Liste von' claimAudit'-Objekten hinzuzufügen. –

+0

Mymodel! = ClaimAudit. Wenn 'Mymodel' nicht' claimAudit' erbt, kann dies nicht so gemacht werden. –

+0

Das OP hat nicht gesagt, was die Typen waren, MyModel und claimAudit nicht vorhanden –

Antwort

0

Das nie funktionieren wird. Sie können keine ClientLog Sammlung zu einer Sammlung hinzufügen, die ClaimAudit erwartet .dass das gleiche ist wie der Versuch, ein Objekt vom Typ Auftrag zu einer Sammlung von Objekten des Typs User.I hinzufügen hoffe, dass ich Sinn mache ...

Das Beispiel unten arbeiten, weil db.claimAudit.AddRange() zwei Dinge erwartet:

  1. Ein IEnumerable
  2. Ein Typ IEnumerable von ClaimAudit

und List<ClaimAudit> erfüllt diese beiden conditions.As sobald Sie List<ClaimAudit> zu List<ClientLog> ändern Sie Punkt verletzen 2 und der Code wird brechen

var claimAudits = new List<ClaimAudit>(); 
var claim1 = new ClaimAudit(); 
var claim2 = new ClaimAudit(); 
claimAudits.Add(claim1); 
claimAudits.Add(claim2); 

db.claimAudit.AddRange(claimAudits); 

Vielleicht, Sie müssen tatsächlich Anspruch Protokolle statt Anspruch Prüfungen einfügen, wenn das der Fall ist dann nur ändern Sie diese Zeile:

db.claimAudit.AddRange(ClaimLogs); 

dazu:

db.claimLogs.AddRange(ClaimLogs);