0

列(コンマ区切りで保存)を変換して、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デザイナーでそれを行う方法について私に指摘できますか?

注:テーブル構造を変更できず、最初にデータベースを使用しています

ありがとう

4

1 に答える 1

0

これを行う方法はありません。さらに悪いことに、SQLでは句を使用してサブジェクトをフェッチできる可能性がありますINが、linqではそのオプションすらありません。残っているのは、最初Studentにデータベースからを取得し、次にint配列内のサブジェクトを解析し、最後にクエリを使用してSubjectsを取得するという骨の折れるlinq-to-objects操作です。Contains

var subjectIds = student.Subjects
    .Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
    .Select (x => int.Parse(x));

var subjects = context.Subjects.Where(s => subjectIds.Contains(s.Id));

(そして、建築家を学生として「データベース設計」という主題のコースに送ることを忘れないでください)

于 2012-11-15T21:16:11.217 に答える