2017-09-12 6 views
0

私は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フィールドが作成されます。あなたはこれを実行する必要はありません。

​​

あなたは、複合キーを持つテーブルを作成して先に行くと、ちょうどIdフィールドを複製することなく、あなたのコードのフィールドを追加したい場合。それで問題はありません。

関連する問題