2017-11-25 3 views
1

Ich habe folgende Klassen:Wie Fremdschlüssel zu definieren, ohne Navigationseigenschaft

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; } 
} 

Ich brauche nicht von CompanyDetail zu Unternehmen navigieren so dass ich nicht Navigationseigenschaft haben.

Ein Unternehmen kann CompanyDetail haben, aber es ist nicht erforderlich.

Der erwartete Entwurf wird mit einer Tabelle mit dem Namen CompanyDetail und die company_id ist der PK sowie FK (zum Firmen Tabelle)

Wenn ich das Modell zu erstellen, erhalte ich folgende Fehlermeldung:

EntityType 'CompanyDetail' has no key defined. Define the key for this EntityType. CompanyDetails: EntityType: EntitySet 'CompanyDetails' is based on type 'CompanyDetail' that has no keys defined.

Ich muss herausfinden, wie ich das Problem mit Fluent API oder Data Annotation lösen kann.

Antwort

1

Sie müssen definieren, [Taste] für CompanyDetail

versuchen

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) 
Verwandte Themen