我有一个使用.Net Core 2.0在Visual Studio 2017中开发的项目的基本模型。型号以下.Net Core 2.0默认为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'。
添加一个明确的二传手,当您设置类型 –
时,设置Id我不完全相信我遵循。如果不存在类型,我不能显式设置类型。如果没有设置报价类型,我的目标是报价失败。但是,目前,它成功地将其设置为'0',这被认为是有效的模型,这导致抛出异常,因为SaveChanges()调用将无法将其插入到表中。 –
你在说什么?如果没有类型存在,你的密钥应该是空的。如果他们类型存在,当你在setter中设置类型时,也设置ID –