我是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个元素,需要一段时间(20分钟)生成9000个实例。我尝试使用protobuff,但仍然占用200mb,当我尝试重新读取数据时出现错误。
答案 0 :(得分:1)
您必须使用.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();
}