我已经看到很多实现一对一关系的例子,但是我做错了,因为要求有些不同(Guid有数据库生成选项,外键属性等等。)
我有两个类别(Bundesland,Programmkonfiguration),它们具有1:1的关系(商业意义上都需要两端)但不能加入一个表
对Bundesland的要求:
Bundesland.cs:
public class Bundesland
{
[Key]
public Guid Id { get; set; }
public virtual Programmkonfiguration Programmkonfiguration { get; set; }
}
对Bundesland的要求
Programmkonfiguration.cs:
public class Programmkonfiguration
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public Guid Bundesland_Id { get; set; }
public virtual Bundesland Bundesland { get; set; }
}
数据库架构应如下所示
为什么我到现在为止失败了:
如果您想帮助我,请参阅以下其他课程:https://gist.github.com/anonymous/9cb554cd864e3dbee1ac
我正在使用带有EF5的.NET 4.5(.1),但我也没能使用EF6
提前致谢:)
答案 0 :(得分:0)
您可以使用流畅的配置:
public class Bundesland
{
[Key]
[ForeignKey("Programmkonfiguration")]
public Guid Id { get; set; }
public virtual Programmkonfiguration Programmkonfiguration { get; set; }
}
public class BundesLandConfiguration: EntityTypeConfiguration<Bundesland>
{
public BundesLandConfiguration()
{
HasProperty(p=>p.Id)
HasRequired(p=>p.Programmkonfiguration).WithRequiredPrincipal(p=>p.Bundesland);
}
}
public class Programmkonfiguration
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public Guid Bundesland_Id { get; set; }
public virtual Bundesland Bundesland { get; set; }
}
public class ProgrammkonfigurationConfiguration: EntityTypeConfiguration<Programmkonfiguration>
{
public ProgrammkonfigurationConfiguration()
{
HasKey(p=>p.Id);
HasProperty(p=>p.Id)
HasProperty(p=>p.Bundesland_Id)
}
}
不要忘记将此配置添加到db context中的EntityModelConfigurations。
更新:因为属性命名违反了惯例,所以你应该添加[ForeignKey]属性,因为我添加到了Bundesland类的属性ID中。