使用Linq插入行

本文关键字:插入 Linq 使用 | 更新日期: 2023-09-27 18:19:41

有人能说出我在哪里犯了错误吗?:(我想用这个插入一行。它就是不起作用。我还试过用"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;
        }

使用Linq插入行

使用实体框架保存通常是这样工作的。使用上面的代码作为起点。

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()

我建议你读这篇文章。这是对实体框架的简单介绍。

不确定你想做什么。

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

如果您计划将数据插入同一个DB,则需要使用上下文中的一个属性来表示List集合,并在此属性上添加新元素。

类似于:

context.Lists.Add(element);

如果你想检索数据,你不应该调用SaveChanges()!,

尝试从一个查询中获取所有值,如下所示:

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