我在代码第一个实体框架中有一个场景,我需要两个表之间的foriegn键约束为1比1,而不使用两个表的主键。
鉴于以下模型:
public class Appointment
{
[Key]
public int Id { get; set; }
}
public class InitialAppointment : Appointment
{
public int UserId { get; set; }
[ForeignKey("UserId")]
public User User { get; set; }
}
public class User
{
[Key]
public int Id { get; set; }
public string UserName { get; set; }
public InitialAppointment InitialAppointment { get; set; }
}
User
只能有1个可选initial appointment
,初始约会继承自Appointment
:所以我希望所有3个表之间的关系为1 - 1,但是用户记录和约会记录可以自己存在。但是,没有用户或约会,初始约会就不可能存在。
当我尝试实现这一点时,我使用了Fluent API来指定以下内容(以及上面的注释):
modelBuilder.Entity<User>()
.HasOptional<InitialAppointment>(u => s.InitialAppointment)
.WithRequired();
问题是实体框架没有正确创建表,它们的生成方式如下:
如何通过数据注释或Fluent API告知实体框架用户应该与初始约会和初始约会有一个可选的1 - 1关系应该与约会继承(通过1 - 1关系)吗?
答案 0 :(得分:-1)