Разделение сущности только с помощью кода
-
21-09-2019 - |
Вопрос
Является ли их способ использования кода 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.