2016-08-30 3 views
0

Entity Framework Core를 통해 PostgreSQL 데이터베이스와 상호 작용하는 일부 REST 웹 서비스를 구현하는 ASP.NET Core 1.0 웹 응용 프로그램이 있습니다.Entity Framework ID 열 네거티브 값

[Key] 
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
public int Id { get; set; } 

분명히이 데이터베이스에 자동 증가 고유 키 ID 컬럼에 해당합니다 내 모델에서

, 나는 코드 제 1 개체의 다음과 같은 패턴을 활용 클래스의 다양한 있습니다.

문제는 의심 할 여지없이 어딘가에서 비롯된 것입니다. 때때로 내가 이해하지 못하는 이유 때문에 ID의 값이 매우 큰 음수입니다.

-2147482645 

일반적으로, 그들은 잘 행동하는 친절하게 상승하는 정수 값을 원인이 될 수 무엇 1.

에서 시작?

+0

누군가가 수동으로 그러한 번호를 삽입하는 것을 막을 수는 없습니다. –

+0

PostgreSQL에 대한 저의 __very__ 제한된 이해는 autoincrement 데이터 유형이'serial' 또는'bigserial'이라고합니다. 아마 당신은 마이그레이션이 무엇을 생성 하는지를 확인해야하고, 원하는 것이 아닌 경우'Column' 속성을 사용하여 원하는 데이터 유형을 지정할 수 있습니다. 덧붙여, 현재 사용중인 속성은 불필요합니다. 핵심 속성은 규칙을 따릅니다. –

+0

@a_horse_with_no_name 네,하지만 저는 그렇게하지 않을 것입니다. EF가 인서트를 완벽하게 제어하도록하고 있습니다. – robbpriestley

답변

0

이 문제는 Add()을 호출하여 삽입되기 전에 엔티티에서 Update()을 호출하는 것과 관련이 있습니다. 당연히 Update()을 삽입되지 않은 엔터티에 호출하면 예외가 throw됩니다. 그러나 예외를 잡아서 엔티티를 추가해야하는 플래그로 사용하는 것은 옵션으로 보이지 않습니다. 일관되게 그렇게하면 음수의 Id 값이 후속 삽입에 사용됩니다. 해결책은 엔티티가 아직 존재하지 않는다는 다른 방법을 사용하여 감지 한 다음 Update()을 기본 동작으로 사용하는 대신 적절하게 Add()을 호출하여 삽입하는 것이 었습니다.

관련 문제