我在找出在 EF 6.1.3 中映射我的Client/Person类的正确方法时遇到了一些麻烦。
public class Client
{
public int ClientId { get; set; }
public int PersonId { get; set; } // FK
// Navigation Properties
public virtual Person Person { get; set; }
}
public class Person
{
public int PersonId { get; set; }
}
这是它的工作原理:
客户需要一个人,人有一个可选的客户。
FK 在 Client 类中,但我不能这样做:
public class ClientMap : EntityTypeConfiguration<Client>
{
public ClientMap()
{
// Primary Key
HasKey(t => t.ClienteId);
// Properties
Property(t => t.ClientId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); // Auto-increment
Property(t => t.PersonId).IsRequired(); // FK to Person
// Relationships
// Error here, HasForeignKey doesnt exists.
HasRequired(t => t.Person).WithOptional().HasForeignKey(t => t.PersonId);
// Table
ToTable("Client");
}
}
我已经看过 MapKey 方法,但我不确定它是如何工作的,因为我读到它仅在您的 FK 属性未在模型中声明时使用,但在我的场景中,它在Client类中声明为PersonId 。
Person类没有对Client的导航属性,只有对Person的Client。
问题:如何使用 ClientMap 类中的 Fluent API 正确映射它?
任何帮助将不胜感激。