Преобразование разделенных запятыми элементов в сущность с использованием 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));

(И не забудьте отправить архитектора в качестве студента на курс по теме "Проектирование базы данных")

Другие вопросы по тегам