使用 Linq 插入行

Insert rows using Linq

谁能告诉我哪里出错了? :( 我想用这个插入一行。它只是不起作用。我也尝试使用 "context.SaveChanges();" 但没有任何改变。根本没有插入,也没有例外。

public List<string> Add_Address(string address, int selected_item)
        {
            List<string> list = new List<string>();

            using(var context = new RSS_Reader_Database())
            {
                Address Address = new Address();
                Category_Address Category_Address = new Category_Address();

                Address.URL = address.ToString();                               

                int max_id = Convert.ToInt32(context.Addresses.OrderByDescending(t => t.ID_Address).FirstOrDefault());

                Category_Address.ID_Address = max_id;                
                Category_Address.ID_Category = selected_item+1;


                var select_query = from t in context.Addresses select t.URL;


                foreach (var element in select_query)
                {
                    list.Add(element);
                }

            }            

            return list;
}

编辑:根据您的所有建议,我做了一些有用的东西。看看上面这段代码,我不知道我昨天想做什么。非常感谢。

public List<string> Add_Address(string address, int selected_item)
        {
            List<string> list = new List<string>();

            using(var context = new RSS_Reader_Database())
            {
                Address Address = new Address() { URL = address };                

                context.Addresses.Add(Address);
                context.SaveChanges();

                int max_id = context.Addresses.Max(u => u.ID_Address);

                Category_Address Category_Address = new Category_Address() { ID_Address = max_id, ID_Category = selected_item + 1 };

                context.Categories_Addresses.Add(Category_Address);
                context.SaveChanges();

                var query = from t in context.Addresses
                            select t.URL;

                var data = query.ToList();

                foreach (var element in data)
                {
                    list.Add(element);   
                }               

            }            

            return list;

        }

如果要检索数据,则不应调用 SaveChanges() !,

尝试像这样从一个查询中获取所有值:

            List<string> select_query = (from t in context.Addresses select t.URL).ToList();

不确定您要做什么。

但是,如果您希望通过 list.Add(element); 命令插入数据,那将行不通。

如果您打算将数据插入到同一个数据库中,您需要使用来自上下文的一个属性来表示List集合添加一个新元素这个属性.

类似于:

context.Lists.Add(element);

用Entity Framework保存通常是这样的。使用您上面的代码作为起点。

using(var context = new RSS_Reader_Database())
{
    Address address = new Address();

    // Set address properties

    context.Addresses.Add(address);
    context.SaveChanges();
 }

您需要将对象添加到 DbSet<T>,其中 T 是在 DbContext 上定义的实体类型。然后,您需要在上下文中调用 SaveChanges()

我建议阅读 this。这是对 Entity Framework 的简单介绍。