Question

est leur façon en utilisant Entity Framework de code uniquement pour avoir une entité qui a des champs de deux tables si les deux tables ne contiennent pas la clé primaire?

Voici un exemple.

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

Je veux la propriété Nom d'utilisateur de l'objet BlogPost à être mis en correspondance à la colonne de nom d'utilisateur de la table utilisateur. Je peux faire la cartographie à l'aide d'une clé étrangère à l'aide du concepteur, mais je ne suis pas sûr de savoir comment faire en utilisant le code uniquement. J'ai essayé d'utiliser deux déclarations de MapHierarchy dans mon objet de configuration, mais il semble que cela ne fonctionne que si les deux tableaux nous la même clé primaire.

Était-ce utile?

La solution

Je ne pense pas que ce soit possible avec l'état actuel de Entity Framework.

Pour faire le fractionnement de l'entité, vous devez avoir un 1 à 1 cartographie (la clé primaire doit être dans les deux tableaux).

Je suis trompé avec mon en supposant que les quêtes parce que vous pouvez ajouter des colonnes à partir d'une deuxième table dans le concepteur que le code fonctionne réellement. Je reçois une erreur très similaire lorsque vous essayez de faire la mise en correspondance dans le EDMX comme je le fais lors de l'utilisation de code seulement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top