.Net Core 2.0을 사용하여 Visual Studio 2017에서 개발 된 프로젝트의 기본 모델이 있습니다. 다음과 일치하는 모델.Net Core 2.0 Foreign Key defaulting 0
public class QuoteModel : BaseModel{
public QuoteModel()
{
GetQuoteItems = new List<QuoteItemModel>();
}
[Required]
public int QuoteTypeID { get;set; }
[Required]
[ForeignKey("QuoteTypeID")]
public QuoteTypeModel QuoteType { get;set;}
public ICollection<QuoteItemModel> GetQuoteItems { get; set; }
}
나는 [필수] 주석이 있거나 없는데이 문제를 해결하기 위해 노력했습니다. 문제는 새 견적을 작성하는 경우 QuoteTypeID의 기본값은 0이므로 사용자가 유형을 선택하지 않으면 모델이 여전히 유효하다는 것입니다. 나는 모델이 외래 키를 기본값으로 설정하지 않음으로써 자체를 무효화한 경우 선호하지만 외래 키가 기본값으로 설정되어있는 이유를 알지 못합니다. 내 연구에서 대부분 기본값으로 null을 요구하는 것으로 나타났습니다. ID가 제공됩니다.
외래 키 'QuoteTypeID'에 기본값이 없지만 값을 설정해야하는 방법은 무엇입니까?
또한, 명확성을 위해 BaseModel은 'CreatedOn'및 'CreatedBy'와 같은 대부분의 모델에서 원했던 몇 가지 표준 필드를 제공합니다.
명시 적 세터를 추가, 당신이 타입을 설정할 때 이드를 설정합니다. –
내가 따를 지 모르겠다. 형식이없는 경우 형식을 명시 적으로 설정할 수 없습니다. 견적 유형이 설정되지 않은 경우 내 목표는 실패합니다. 그러나 현재 유효한 모델로 간주되는 '0'으로 성공적으로 설정되므로 SaveChanges() 호출에서이 값을 테이블에 삽입하지 못하면 예외가 throw됩니다. –
그게 무슨 소리 죠? 형식이없는 경우 키를 Null 할 수 있어야합니다. setter에서 유형을 설정할 때 유형이 존재하는 경우 id를 설정하십시오. –