我有2个模型,Registration和RegistrationCode。一个注册可以具有一个注册码,而一个注册代码可以具有一个注册码。
public class Registration
{
public Registration()
{
RegistrationDate = System.DateTime.Now;
}
[Key]
public int RegistrationID { get; set; }
[DataType(DataType.DateTime)]
public DateTime? RegistrationDate { get; set; }
public RegistrationCode RegistrationCode { get; set; }
}
public class RegistrationCode
{
[Key]
public string Code { get; set; }
public bool IsUsed { get; set; }
public Registration Registration { get; set; }
}
我试过像这样用Fluent API映射关联:
modelBuilder.Entity<Registration>()
.HasOptional(t => t.RegistrationCode)
.WithOptionalPrincipal();
但是问题是,当我使用update-database重新创建数据库时,我的RegistrationCode表具有以下字段,这表明有些不正确:
Code nvarchar(50) Unchecked
IsUsed bit Unchecked
Registration_RegistrationID int Checked
Registration_RegistrationID1 int Checked
有人可以建议我该怎么做吗?
根据您的代码
modelBuilder.Entity<Registration>()
.HasOptional(t => t.RegistrationCode)
.WithOptionalPrincipal();
您告诉EF,有一个主体(Registration
),其关联关系不是模型的一部分。除此之外,中还有Registration
属性RegistrationCode
。EF将其作为第二个外键。解决方法是告诉EF两者相同:
modelBuilder.Entity<Registration>()
.HasOptional(t => t.RegistrationCode)
.WithOptionalPrincipal(r => r.Registration);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句