2016-06-13 1 views
-1

J'essaie de mettre à jour les enregistrements et enregistrer les modifications apportées à la base de données et il semble que je ne peux pas parce que je ne peux pas obtenir ma liste. désolé si ma question n'est pas claire. Faites-moi savoir s'il y a d'autres façons de le faire.Comment ajouter des éléments à une liste existante en utilisant AddRange

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 obtenir cette erreur:

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

+1

L'erreur semble assez clair. Vous essayez d'ajouter une collection d'éléments 'MyModel' à une liste d'objets' claimAudit'. –

+0

Mymodel! = ClaimAudit. Sauf si 'Mymodel' hérite de' claimAudit', ceci ne peut pas être fait comme ceci. –

+0

L'OP n'a pas dit quels étaient les types, MyModel et claimAudit n'existaient pas –

Répondre

0

Ça ne marchera pas. Vous ne pouvez pas ajouter une collection ClientLog à une collection qui attend ClaimAudit .que est la même chose que d'essayer d'ajouter un objet de type commande à une collection d'objets de type User.I espère que je sens ... faire

L'exemple ci-dessous fonctionnera parce que db.claimAudit.AddRange() deux choses: attend

  1. Un IEnumerable
  2. Un IEnumerable de type ClaimAudit

et List<ClaimAudit> satisfait ces deux conditions.As dès que vous changez List<ClaimAudit> à List<ClientLog> vous violez point 2 et le code casserez

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

db.claimAudit.AddRange(claimAudits); 

Peut-être que vous avez réellement besoin d'insérer des journaux de réclamation au lieu des audits de réclamation, si tel est le cas, alors que modifier cette ligne:

db.claimAudit.AddRange(ClaimLogs); 

à ceci:

db.claimLogs.AddRange(ClaimLogs);