[SQL] 엔티티 프레임 워크의 기본 키와 같은 문자열 속성을 사용하는 방법
SQL엔티티 프레임 워크의 기본 키와 같은 문자열 속성을 사용하는 방법
나는 EF에 새로 온 사람과 ETF6.0 코드 첫 번째 방법으로 내 첫 번째 단계를 수행하려고 지금은 문제가있다.
나는 속성이
[Key]
public string FooId { get; set; }
이는 모델에 대한 내 기본 키입니다.
하지만이를 실행하는 경우
패키지 관리자 콘솔의 명령은 내가 다음과 같은 오류가 데이터베이스로 마이그레이션을 보류 업데이트 :
나는 내 모델의 PK를 변경하는 경우
[Key]
public int FooId { get; set; }
모든 것이 잘 작동합니다.
그러나 나는 절대적하게 내 경우시키는 Sens 때문에 문자열 형식이 될하기 위해 PK가 필요합니다. 나는 단점이 있습니다 알고 있지만 나에게 필요가있다.
내가 엔티티 프레임 워크의 기본 키로 문자열을 만들려면 여기에 이전 게시물을 보았다!
그러나 그것은 내 문제를 해결하지 보인다 또는 난 그냥 그것을 이해하지 않습니다.
그것은 내가 SQL 데이터베이스에 PK로 문자열을 사용할 수 없다는 정말?
또는 그렇게하는 방법은 무엇입니까?
해결법
-
==============================
1.이것은 신원 자동 증가를 사용할 수없는 PK를 만드는 올바른 방법입니다 :
이것은 신원 자동 증가를 사용할 수없는 PK를 만드는 올바른 방법입니다 :
[Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public string FooId { get; set; }
-
==============================
2.당신이 문자열로 기본 키가 필요한 경우, 다음 ID 열하지 않습니다. 신원 열은 값을 직접 생성하려는 경우 당신이 꺼질 당신을 위해 기본 키 값을 생성합니다.
당신이 문자열로 기본 키가 필요한 경우, 다음 ID 열하지 않습니다. 신원 열은 값을 직접 생성하려는 경우 당신이 꺼질 당신을 위해 기본 키 값을 생성합니다.
-
==============================
3.기본 키로 문자열을 가지고하는 이유는 무엇입니까?
기본 키로 문자열을 가지고하는 이유는 무엇입니까?
난 그냥 자동 증가 정수 필드 기본 키를 설정하고, 문자열 필드에 인덱스를 넣어 것입니다.
그런 식으로 당신은 그들이 상대적으로 빠른해야 테이블에 검색을 수행하고, 조인 및 정상적인 모습 올린다는 자신의 속도에 영향을받지 않습니다 당신의 모든합니다.
또한 색인을 가져옵니다 문자열 필드의 양을 제어 할 수 있습니다. 당신이 충분히 될 것이라고 생각하는 경우 즉, "오직 인덱스 처음 5 자"를 말할 수 있습니다. 또는 데이터가 상대적으로 유사 할 수 있다면, 인덱스 전체 필드를 할 수 있습니다.
-
==============================
4.자신의 실체를 변경하고자하지 다른 사람에 대한 또 다른 가능한 대답은 DbContext을 말하고있다 :
자신의 실체를 변경하고자하지 다른 사람에 대한 또 다른 가능한 대답은 DbContext을 말하고있다 :
builder.Entity<Food>(b => { b.Property(u => u.FooId).HasDefaultValueSql("newsequentialid()"); });
이는 식품 모델은 FoodId라는 ID를 가지고있는 DbContext을 말할 것이다 그것은 것 ID 생성을 필요로한다.
EF 코어 기본값 : MSDN
from https://stackoverflow.com/questions/32983524/how-to-use-string-property-as-primary-key-in-entity-framework by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 캔 PreparedStatement.addBatch ()는 SELECT 쿼리에 사용? (0) | 2020.07.01 |
---|---|
[SQL] MySQL은 여러 열에서 고유 값을 계산 (0) | 2020.07.01 |
[SQL] MySQL의에서 일련 번호 삽입 (0) | 2020.07.01 |
[SQL] WHERE 절에서 선택적 인수 [중복] (0) | 2020.07.01 |
[SQL] MySQL의 프로파일 링하는 방법 (0) | 2020.07.01 |