2017-09-12 13 views
0

ID 대신 기본 키로 코드가있는 테이블이 있습니다. DeleteAsync 메서드를 호출하면 Message = "Cannot update identity column 'Id'." 예외가 발생합니다.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 필드가 자동으로 생성됩니다. 당신은이 작업을 수행 할 필요가 없습니다 :

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

당신이, 복합 키가있는 테이블을 만들 가서 바로 ID 필드를 복제하지 않고 코드 필드를 추가합니다. 그러면 아무런 문제가 없습니다.