2017-09-12 55 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字段

​​

:你并不需要这样做。那么你将没有问题。