Frage

Gibt es einen Weg, mit Entity Framework-Code-Only eine Einheit haben, die Felder aus zwei Tabellen hat, wenn beide Tabellen nicht den Primärschlüssel enthalten?

Hier ist ein Beispiel.

public class BlogPost
{
    public int PostID { get; set; }
    public String PostBody { get; set; }
    public int UserID { get; set; }
    public string Username { get; set; }
}

public class User
{
    public int UserID { get; set; }
    public String Username { get; set; }
}

public class BlogPostConfiguration : EntityConfiguration<BlogPost>
{
    public BlogPostConfiguration()
    {
        HasKey(b => b.PostID);
    }
}

public class UserConfiguration : EntityConfiguration<User>
{
    public UserConfiguration()
    {
        HasKey(b => b.UserID);
    }
}

Ich möchte die Username-Eigenschaft des Objekts an den Blogpost Benutzernamen Spalte der Benutzertabelle abgebildet werden. Ich kann die Zuordnung tun einen Fremdschlüssel mit dem Designer verwenden, aber ich bin nicht sicher, wie das zu tun, nur mit Code. Ich habe versucht, in meinem Konfigurationsobjekt zwei MapHierarchy-Anweisungen, aber es sieht aus wie das funktioniert nur, wenn beide Tabellen uns die gleichen Primärschlüssel.

War es hilfreich?

Lösung

Ich glaube nicht, das ist möglich mit dem aktuellen Stand der Entity Framework.

Um Sie Entität Splitting zu tun, um eine 1-zu-1-Zuordnung haben (der Primärschlüssel in beiden Tabellen sein muss).

Ich war falsch mit meinen Questen, dass unter der Annahme, weil Sie Spalt aus einer zweiten Tabelle in dem Designer, dass der Code tatsächlich Arbeit hinzufügen. Ich erhalte einen sehr ähnlichen Fehler beim Versuch, die Zuordnung in der EDMX zu tun, wie ich tue, wenn mit Code-Only.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top