Я использую базу данных «многие ко многим» с таблицами соединений, соединяющими основные таблицы данных через внешние ключи.
http://img12.imageshack.us/img12/6500/databasew.png
При моем представлении данных требуется объединить несколькостроки полей подчиненной таблицы (например, Genres.name) в одну ячейку сетки данных.
Название книги |Жанры
Некоторая книга |художественная литература;фильм ужасов;mystery
С набором данных я использовал этот запрос SQL с GROUP_CONCAT для этой цели:
SELECT Books.ID, Books.BOOKTITLE, GROUP_CONCAT(Genres.name, '; ') As Gen
FROM Books INNER JOIN
Books_Genres ON Books.ID = Books_Genres.book_id INNER JOIN
Genres ON Books_Genres.genre_id =Genres.id
GROUP BY Books.ID
Поскольку я сейчас перехожу к EF4 и, будучи довольно новым для него, японятия не имею, как получить ту же самую результирующую таблицу, которая могла бы отображаться в таблице данных с сущностями.Какие изменения следует внести в модель Entity, чтобы получить тот же результат?
Любая помощь приветствуется!
Обновление:
У меня есть модель сущностей, сгенерированная базой данных (Model1.edmx & Model1.Designer.cs).Нужно ли редактировать Model1.edmx (XML-файл)?Несколько пошаговых инструкций очень помогли бы.Я только начинаю EF4, это все греческое для меня.:)
Я создал собственный класс:
public partial class Book {
[EdmScalarProperty(EntityKeyProperty = false, IsNullable = true)]
[DataMember()]
public global::System.String GenresConcatenated
{
get { return string.Join("; ", Genres.Select(g => g.name));}
set {}
}
private List<Genre> Genres{ get; set; }
}
Теперь я могу получить доступ к свойству GenresConcatenated в IDE IntelliSense, но когда я запускаю приложение, оно выдает ошибку:
Количество членов в концептуальном типе «MyNamespace.Book» не совпадает с количеством членов на стороне объекта типа «MyNamespace.Common.Book».Убедитесь, что количество членов одинаково.
Похоже:
... EntityDataSource не поддерживает пользовательские свойства в частичных классах.Он возвращает только сущность, которая находится в модели. (Связывание пользовательского свойства в Entity Framework)
Итак, я вернулся к исходной точке.:)