[英]How to Create DataTable from arrayList with Entity Framework
如果要根据EF / DB建模对其进行建模,则可以做两件事(非常基础)
在下面的示例中, DynamicData
和DynamicDataValue
是一对多关系的示例,而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);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.