使用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;
}
使用实体框架保存通常是这样工作的。使用上面的代码作为起点。
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();