2016-02-04 2 views
0

У меня есть динамическая таблица в моем веб-приложение (написано с angualrjs), в этой таблице вы можете добавить столбцы/добавить строки и т.д ..Как создать DataTable из ArrayList с Entity Framework

Я хочу, чтобы это table/s, хранящиеся в базе данных с использованием структуры сущности. Я сохраняю эту таблицу на сервере в виде списка [] (массив из списка строк - каждый список в массиве представляет строку в таблице).

Но рамки сущность требует от меня, чтобы создать модель .. но probelm это таблица полностью динамический .... (может добавить пользователей/Удалить строки/столбцы динамически ..)

Как можно достичь хранения Список [] в таблице данных с объектом framework?

Спасибо большое за помощь !!!

Или есть лучший способ реализации этого? enter image description here

+0

сделать поиск Google по следующим 'из массива datatable' и вместо того, чтобы делать это с массивом [] сделать это для Список или список это на самом деле не так сложно, особенно если вы понимаете циклы – MethodMan

+0

Эй, спасибо за повтор .. но как мне реализовать это с помощью сущности framework? –

ответ

0

Если вы хотите смоделировать его с точки зрения моделирования EF/DB, вы можете сделать 2 вещи (очень простые)

  1. Standard один ко многим отношений между строками и столбцами.
  2. Одна строка с столбцом id и values, где столбец значений - только список, разделенный запятыми.

В примере ниже DynamicData и DynamicDataValue являются примером 1-многих отношениях и DynamicData2 это разделенный запятыми список

EF Контекст

public class Context : DbContext 
    { 
     public Context() 
      : base("35213027DatatableFromArraylist"){} 

     public DbSet<DynamicData> DynamicDatas { get; set; } 

     public DbSet<DynamicData2> DynamicData2s { get; set; } 
    } 

1-многие

public class DynamicData 
    { 
     public int Id { get; set; } 

     public virtual ICollection<DynamicDataValue> Values { get; set; } 
    } 

    public class DynamicDataValue 
    { 
     public int Id { get; set; } 
     public string Value { get; set; } 
    } 

Comma отделено

public class DynamicData2 
    { 
     public int Id { get; set; } 

     public string Values { get; set; } 
    } 

Сохранение и чтение

static void Main(string[] args) 
     { 
      //one-many 
      using (var context = new Context()) 
      { 
       var values = new List<DynamicDataValue>(); 
       for (int i = 0; i < 11; i++) 
       { 
        values.Add(new DynamicDataValue { Value = string.Format("Value{0}", i) }); 
       } 

       context.DynamicDatas.Add(new DynamicData { Values = values }); 

       context.SaveChanges(); 

       var query = 
        context.DynamicDatas.Select(
         data => new { data.Id, values = data.Values.Select(value => value.Value) }).ToList(); 

       foreach (var item in query) 
       { 
        var strings = item.values.Aggregate((s, s1) => string.Format("{0},{1}", s, s1)); 
        Console.WriteLine("{0} - {1}", item.Id, strings); 
       } 
      } 

      Console.ReadLine(); 

      //comma seperated 
      using (var context = new Context()) 
      { 
       var values = new List<string> { "value1", "value2", "value3" }; 
       context.DynamicData2s.Add(new DynamicData2 { Values = values.Aggregate((s, s1) => string.Format("{0},{1}", s, s1)) }); 
       context.SaveChanges(); 

       var data = context.DynamicData2s.ToList(); 
       foreach (var dynamicData2 in data) 
       { 
        Console.WriteLine("{0}-{1}", dynamicData2.Id, dynamicData2.Values); 
       } 
      } 

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