如何在没有导航属性的情况下定义外键

时间:2017-11-25 00:50:42

标签: c# entity-framework entity-framework-6 ef-code-first

我有以下课程:

public class Company
{
    public Guid Id { get; set; }
    public string Name { get; set; }

    public CompanyDetail CompanyDetail { get; set; }  // This is optional
}

public class CompanyDetail
{

    public Guid Company_Id { get; set; }  // This supposed to be PK and the FK to Company

    public string ContactName { get; set; }
    public string WebSite { get; set; }
    public string Phone { get; set; }
}

我不需要从CompanyDetail导航到公司,因此我没有导航属性。

公司可能有公司详细信息,但不是必需的。

预期的设计有一个名为CompanyDetail的表,Company_Id是PK和FK(到公司表)

创建模型时,收到以下错误:

  

EntityType' CompanyDetail'没有定义键。为此定义密钥   的EntityType。 CompanyDetails:EntityType:EntitySet' CompanyDetails'是   基于类型' CompanyDetail'没有定义键。

我需要如何使用Fluent API或Data Annotation解决问题。

1 个答案:

答案 0 :(得分:1)

您需要为CompanyDetail定义[Key]

public class Company
{
    [Key]
    public Guid Id { get; set; }

    public virtual CompanyDetail CompanyDetail { get; set; }  // This is optional
}

public class CompanyDetail
{
    [Key]
    public Guid Company_Id { get; set; } 

}

...
    modelBuilder.Entity<Company>()
        .HasOptional<CompanyDetail>(u => u.CompanyDetail)