我的数据模型中的Emails
对象与EmailTemplates
有关系,但由于电子邮件不 NEED 有关联的模板,我希望关系允许空值,以便我在Email
中将属性设置为虚拟:
public class Email
{
public int Id { get; set; }
public virtual EmailTemplate EmailTemplate { get; set; }
}
遗憾的是,这并未将为FK关系生成的EmailTemplateId列设置为可为空,因此每当我尝试添加不使用模板的电子邮件时,我的insert语句都会违反约束。
如何修改数据模型以允许此关系为空?
答案 0 :(得分:0)
virtual
修饰符与所需属性无关。您可以通过添加可为空的外键(int?
)属性来实现您想要的功能:
public class Email
{
public int Id { get; set; }
[ForeignKey("EmailTemplate")]
public int? EmailTemplateId { get; set; }
public virtual EmailTemplate EmailTemplate { get; set; }
}
另一种方法是在上下文的OnModelCreating
覆盖中添加映射:
modelBuilder.Entity<Email>()
.HasOptional(m => m.EmailTemplate )
.WithMany().Map(m => m.MapKey("EmailTemplateId"));