Вопрос

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

Вот один из примеров.

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 в моем объекте конфигурации, но, похоже, это работает только в том случае, если обе таблицы используют один и тот же первичный ключ.

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top