0
我正在为其中一个网站编写解析器,该网站的产品已连接到类别。我正尝试用这些项目构建我自己的数据库。实体框架 - 一次插入多个复杂对象
我已经决定使用实体框架,但我是新来这个框架,所以这里是我的问题:
在分析时我有相同类型的多个项目。但类别是种树。我的意思是,类别有一个对parentCategory的引用。
解析的过程中,我有类继承FE的列表:类别1 - > category1.1 - > category1.1.1
每个产品我解析,并添加到数据库中需要验证,如果该类别存在,经过类别继承来创建不存在的类别。
代码如下所示:
Category parentCategory = null;
foreach (var sCategory in categories)
{
var currentCategory = d.CategorySet.SingleOrDefault(category => category.Name == sCategory && category.Parent == parentCategory);
if (currentCategory == null)
{
currentCategory = new Category(){Name = sCategory,Parent = parentCategory};
if(parentCategory != null)
d.Entry(parentCategory).State = EntityState.Unchanged;
}
parentCategory = currentCategory;
}
但在这种情况下,的SingleOrDefault LinQ将不会因为异常的工作:
Unable to create a constant value of type 'DataBaseModel.Category'. Only primitive types or enumeration types are supported in this context.
我知道,我应该比较类别的标识,但在这每次将数据添加到数据库时,都需要将更改保存到数据库中。
有没有其他可能性来处理?