小编Any*_*Key的帖子

是否可以创建一个将项添加到实体框架dbset的通用方法?

我之前没有使用Entity Framework或泛型,并且在减少代码方面遇到了一些困难.

我正在解析一个文本文件来加载10个查找表,其中的数据可能会在每晚更改.文本文件具有"类型"的标题,后跟键/值集的列表.我有这个完美的工作,但我想重构代码来清理它,并希望使用泛型方法来实现这一点,所以我可以减少重复的代码.

我已经解析为泛型方法,但我无法弄清楚如何以通用方式将实体添加到上下文中.我必须遍历每种类型的实体列表并将它们添加到上下文中:

void Main()
{
    switch (line.ToUpper())
    {
        case "AREA":
        {
            List<Area> areaList = this.GetItems<Area>(file);

            foreach (var element in areaList)
            {
                if (context.Area.Find(element.Id) == null)
                {
                    context.Area.Add(element);
                }
            }

            break;
        }
        case "CATEGORY":
        {
            List<Category> categoryList = this.GetItems<Category>(file);

            foreach (var element in categoryList)
            {
                if (context.Category.Find(element.Id) == null)
                {
                    context.Category.Add(element);
                }
            }

            break;
        }
    }
}

private List<T> GetItems<T>(StreamReader reader) where T : ILookupData, new()
{
    string line;
    List<T> list = new List<T>();            

    while (reader.Peek() == ' ') …
Run Code Online (Sandbox Code Playgroud)

c# generics entity-framework entity-framework-5

10
推荐指数
1
解决办法
9590
查看次数