带有c#的实体框架,检索保存的对象
本文关键字:检索 保存 对象 框架 实体 带有 | 更新日期: 2023-09-27 18:21:38
我是EF的新手,看过教程后,我似乎可以很好地保存数据,但不知道检索数据的代码。我的类看起来像
public class Item
{
[Key]
public int index { get; set; }
public string name;
public List<string> type;
public List<string> def;
public HashSet<string> syns;
public HashSet<string> generator_list = new HashSet<string>();
public List<Point> related_items2 = new List<Point>();
}
EF代码看起来像
using (var ctx = new Context())
{
foreach (Item block in items)
{
ctx.items_db.Add(block);
}
ctx.SaveChanges();
var test = from b in ctx.items_db
orderby b.index
select b;
}
我有9000个Item实例,我只想将它们保存在数据库中,然后将它们与所有实例一起检索到List<Item>
中。但我认为我对var test
做得不对,因为它似乎不是List<Item>
,而且我似乎无法在using
语句块之外访问它。
我这样做的唯一原因是,我唯一想做的就是保存related_items2属性(这样我就不必在每次重新启动时重新生成它),因为其中有9000个元素,生成9000个实例需要一段时间(20分钟)。我尝试过使用protobuff,但它仍然需要200mb,当我试图读取回数据时会出现错误。
必须使用.ToList()
将数据更改为项目列表
如果未使用.ToList
,则测试变量为IQueryable
,而不是数据列表使用不起作用的
var test=new List<Item>();
using (var ctx = new Context())
{
foreach (Item block in items)
{
ctx.items_db.Add(block);
}
ctx.SaveChanges();
test = (from b in ctx.items_db
orderby b.index
select b).ToList();
}