如何从ArrayList中与实体框架创建数据表
问题描述:
我在我的Web应用程序动态表(带angualrjs写的),在该表中,您可以添加列/添加行和等。如何从ArrayList中与实体框架创建数据表
我想保持这种table/s使用实体框架存储在数据库中。我将此表作为List [](数组中的字符串列表 - 数组中的每个List代表表中的一行)保存到服务器中。
但实体框架需要我去创建一个模型..但万阿英,蒋达清是表是完全动态的....(用户可以添加/删除动态地行/列。)
我如何能实现存储数据表中的List []与实体 框架?
非常感谢您的帮助!
答
如果你想它EF/DB建模方面的建模,你可以做两件事情(很基本的)
- 一个标准的行和列之间一对多的关系。
- 带有id和values列的一行,其中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; }
}
逗号分隔
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);
}
}
}
做了谷歌搜索以下'从阵列datatable'并且代替以与阵列[]做了做到这一点列表或列表这实际上并不困难,特别是如果你了解循环 –
MethodMan
嘿,感谢您的重播..但我如何实现这与实体框架? –