簡體   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