2017-09-12 88 views
0

我有一個表代碼爲主鍵代碼,當我調用DeleteAsync方法時,我得到異常Message = "Cannot update identity column 'Id'."不能從具有標識列的表中刪除記錄

[Table("Test")] 

public class Test: FullAuditedEntity<int> 

{ 

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
new public int Id { get; set; } 
[Key] 
[DatabaseGenerated(DatabaseGeneratedOption.None)] 
public virtual int Code { get; set; } 

public async Task DeleteTest(int code) 
    { 


     try 
     { 
      await _supplierRepository.DeleteAsync(p => p.Code== code); 
     } 
     catch (Exception ex) 
     { 

     } 
    } 

,但如果我從表中刪除Id列,它工作正常。我想要Id列和Code列作爲PK。

回答

0

建議我們應該使用Id作爲PK,並將其他列作爲唯一約束。所以如果你使用Id作爲PK,你將不會遇到這樣的問題。

2

現在發生的是,由FullAuditedEntity<int>自動創建一個整數的Id字段。如果你想創建一個表具有複合鍵,繼續前進,只要將你的代碼字段不復制Id字段

​​

:你並不需要這樣做。那麼你將沒有問題。