我有一个系统每天调用API多次,并返回一个JSON数组。 JSON数组中的对象由包装,详细信息和项目三个级别组成。例如:
[
{
"Key": "value",
"Details": [
{
"Key": "Value",
"Item": {
"Id": 1,
"Title": "abc"
}
}
]
}
]
我的数据库模型也采用这种结构,这意味着我有一个主表,一个明细表和一个项目表。具体来说,详细信息表具有两个关系,一个关系到主表,一个关系到项目表。
我的客户上下文是按照通用方式设计的,这意味着它不了解正在捕获,反序列化和保存的内容。
ISerializer serializer;
DbContext db;
String url;
public ClientContext(ISerializer serializer, DbContext db, String url){
this.serializer = serializer;
this.db = db;
this.url = url;
}
public async Task RequestAsync() {
...
return response;
}
public async Task SaveAsync(){
using(db){
db.add(serializer.deserialize(await RequestAsync());
await db.SaveChangesAsync();
}
}
deserialize
方法返回一个对象,它没有特定的返回类型。假设我提供的JSON示例,如果数据库中不存在Id
对象的Items
属性,EF会继续添加它,但是如果存在,它将抛出重复的键异常。
我无法进行任何查询来跟踪该级别的重复项,并且我想配置实体框架(而不是在SQL Server中)以忽略重复项。
EF Core支持吗?