繁体   English   中英

如何使用实体框架从arrayList创建DataTable

[英]How to Create DataTable from arrayList with Entity Framework

我的Web应用程序中有一个动态表(用angualrjs编写),在此表中您可以添加列/添加行等。

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

但是实体框架需要我创建一个模型..但是探针是表是完全动态的....(用户可以动态添加/删除行/列。)

如何使用实体框架在数据表中存储List []?

非常感谢您的帮助!!!

还是有更好的方法来实现这一点? 在此处输入图片说明

如果要根据EF / DB建模对其进行建模,则可以做两件事(非常基础)

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

在下面的示例中, DynamicDataDynamicDataValue是一对多关系的示例,而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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM