2016-06-13 101 views
-1

我試圖更新記錄並將更改保存到數據庫,看起來我不能,因爲我無法獲取我的列表。對不起,如果我的問題不清楚。如何使用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(); 
    } 

正在此錯誤:

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

+1

的錯誤似乎很清楚。您正試圖將'MyModel'項的集合添加到'claimAudit'對象列表中。 –

+0

Mymodel!= claimAudit。除非'Mymodel'繼承'claimAudit',否則不能這樣做。 –

+0

該OP沒有說什麼類型,MyModel和claimAudit不存在 –

回答

0

這不會有任何效果。您不能將ClientLog集合添加到期望ClaimAudit的集合中。這與嘗試將類型爲Order的對象添加到類型爲User的對象集合時是一樣的。希望我有道理......

示例下面將工作,因爲db.claimAudit.AddRange()預計兩件事情:

  1. IEnumerable
  2. 類型的IEnumerableClaimAudit

List<ClaimAudit>個同時滿足一旦你改變List<ClaimAudit>List<ClientLog>你違反了2點,代碼將打破

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

db.claimAudit.AddRange(claimAudits); 

也許你確實需要插入要求的日誌,而不是要求審計,如果是這樣的話,那麼只是那些conditions.As改變這一行:

db.claimAudit.AddRange(ClaimLogs); 

這樣:

db.claimLogs.AddRange(ClaimLogs);