2016-10-09 8 views
0

Я новичок в базах данных, и я не уверен, как справиться с этой ситуацией. У меня есть 3 таблицы соединены таким образом:Создание таблицы во время выполнения

Session <- 1:1 -> Document <- 1:1 -> DocumentData 

Так в основном всегда есть 1 Session, что имеет Document который имеет DocumentData.

Я хочу, чтобы иметь возможность добавлять различные типы и столбцы данных DocumentData, так, например, я могу иметь DocumentData с 3 колонки типа DateTime, Int32, Int32. А затем еще один стол с 5 колонками типов Datetime, double, Int32, Int32, Int32. В основном то, что я буду за это иметь что-то вроде этого в моем коде:

using(var unit = new UnitOfWork(new SessionContext())) 
{ 
    var data = unit.Sessions.GetCurrent().Document.DocumentData;  
    var row = data.Column[0].Rows[5]... etc. 
} 

Это происходит потому, что DocumentData генерируется из CSV, указанного пользователем, поэтому каждый DocumentData состоит из различных столбцов.

EDIT: Я хочу знать, как создать таблицу во время выполнения и назначить любые столбцы, которые мне нужны. Поэтому я хочу иметь возможность сделать что-то вроде:

var doc = new Document(); 
session.Document = doc; 
doc.Columns.Add(new Column() {Rows = rows}); 
doc.Columns.Add(new Column() {Rows = rows2}); 
doc.SaveChanges(); 

, а затем второй стол с разными колонками.

EDIT2: Чтобы сделать это более ясно, что я хочу, чтобы преобразовать это:

public class DocumentData { 
    public List<DocumentColumn> Columns { get; set; } 
} 

public class DocumentColumn { 
    public string ColumnName { get; set; } 
    public List<object> Rows { get; set; } 
} 

в ADO.NET лиц, так что я могу сохранить их в базу данных.

+0

Я действительно пытаюсь найти здесь вопрос. В чем дело? –

+0

Я обновил свой вопрос. – FCin

ответ

0

Вы можете использовать инструкцию SQL для создания таблиц во время выполнения (через dbcontext). Я не думаю, что его можно связать такую ​​таблицу с сущностью/классом во время выполнения после инициализации базы данных/контекста.

Но если вам не нужно использовать разные столбцы/переменные в качестве параметров запроса/выбора, просто сериализуйте класс документа в одном столбце BLOB и сделайте это.

Смежные вопросы