Преобразование разделенных запятыми элементов в сущность с использованием edmx
Можно ли преобразовать столбец (хранящийся в виде запятой) для представления в конструкторе edmx как другой объект?
структура таблицы
student
id
name
subjects << this is the comma delimited column (1,2,3,10)
subject
id
name
EDMX дизайнерская структура будет
student
id
name
student_subject
studentId
subjectid
subject
id
name
Если так, может кто-нибудь указать мне, как это сделать на EF Designer.
ПРИМЕЧАНИЕ: я не могу изменить структуру таблицы, и я сначала использую базу данных
Спасибо
1 ответ
Решение
Нет способа сделать это. Хуже того: в SQL может быть возможно получить предметы с IN
пункт, но с linq у вас даже нет этой опции. Боюсь, что остается кропотливая операция linq-to-objects, где вы сначала берете Student
из базы данных, а затем разобрать предметы в int
массив, и, наконец, захватить Subject
с Contains
запрос:
var subjectIds = student.Subjects
.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Select (x => int.Parse(x));
var subjects = context.Subjects.Where(s => subjectIds.Contains(s.Id));
(И не забудьте отправить архитектора в качестве студента на курс по теме "Проектирование базы данных")