Разделение сущностей только с помощью кода - PullRequest
1 голос
/ 24 декабря 2009

Можно ли использовать Entity Framework Code-Only, чтобы иметь сущность, имеющую поля из двух таблиц, если обе таблицы не содержат первичный ключ?

Вот пример.

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

Я хочу, чтобы свойство Username объекта BlogPost было сопоставлено со столбцом username таблицы User. Я могу сделать сопоставление, используя внешний ключ, используя конструктор, но я не уверен, как это сделать, используя только код. Я попытался использовать два оператора MapHierarchy в своем объекте конфигурации, но похоже, что это работает, только если в обеих таблицах используется один и тот же первичный ключ.

1 Ответ

0 голосов
/ 07 января 2010

Я не думаю, что это возможно при текущем состоянии Entity Framework.

Чтобы выполнить разбиение сущностей, необходимо иметь сопоставление 1: 1 (первичный ключ должен быть в обеих таблицах).

Я ошибся в своем задании, полагая, что, поскольку вы можете добавить столбцы из второй таблицы в конструкторе, код действительно будет работать. Я получаю очень похожую ошибку при попытке выполнить сопоставление в EDMX, как при использовании только кода.

...