2016-02-04 79 views
0

我在我的Web应用程序动态表(带angualrjs写的),在该表中,您可以添加列/添加行和等。如何从ArrayList中与实体框架创建数据表

我想保持这种table/s使用实体框架存储在数据库中。我将此表作为List [](数组中的字符串列表 - 数组中的每个List代表表中的一行)保存到服务器中。

但实体框架需要我去创建一个模型..但万阿英,蒋达清是表是完全动态的....(用户可以添加/删除动态地行/列。)

我如何能实现存储数据表中的List []与实体 框架?

非常感谢您的帮助!

或者是否有更好的实现方法? enter image description here

+0

做了谷歌搜索以下'从阵列datatable'并且代替以与阵列[]做了做到这一点列表或列表这实际上并不困难,特别是如果你了解循环 – MethodMan

+0

嘿,感谢您的重播..但我如何实现这与实体框架? –

回答

0

如果你想它EF/DB建模方面的建模,你可以做两件事情(很基本的)

  1. 一个标准的行和列之间一对多的关系。
  2. 带有id和values列的一行,其中values列只是逗号分隔列表。

在下面DynamicDataDynamicDataValue的例子是示例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; } 
    } 

逗号分隔

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); 
       } 
      } 

     }