使用 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 的简单介绍。
谁能告诉我哪里出错了? :( 我想用这个插入一行。它只是不起作用。我也尝试使用 "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 的简单介绍。