【发布时间】:2019-12-03 12:08:14
【问题描述】:
我正在尝试通过 .Net Core 应用程序将 JSON 文件导入 SQL 服务器。
我已经使用 VS 中的工具设置了我的类,该工具将JSON 文档转换为类。然后我使用它来使用 EF Core 迁移创建数据库。
我已使用以下方法将JSON 反序列化到我的RootObject 类中:
RootObject rootObject = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(jsonFromFile);
我可以展开 RootObject 对象,一切看起来都不错,我可以看到每个字段并且它包含正确的数据。
然后我想将此数据插入数据库,我目前有:
var mySolve = new RootObject
{
uuid = rootObject.uuid,
solution = new Solution { gross_margin = rootObject.solution.myValue, imbalances = rootObject.solution.imbalances }
};
db.RootObjects.Add(mySolve);
db.SaveChanges();
db.Dispose();
问题是不平衡类是json文件中的一个列表,如下所示:
"solution": {
"myValue": 9999.99,
"imbalances": [
{
"commodity": "Value1",
"name": "Val1",
"direction": "INPUT",
"amount": 1.419884
},
{
"commodity": "Value2",
"name": "Val2",
"direction": "INPUT",
"amount": 1.419884
}
]
}
我的应用中的不平衡类如下所示:
public class Imbalance
{
public int Id { get; set; }
public string commodity { get; set; }
public string name { get; set; }
public string direction { get; set; }
public float amount { get; set; }
}
我的应用在db.RootObjects.Add(mySolve); of 上引发异常:
实体类型上的导航属性“不平衡”的类型 “解决方案”是“不平衡 []”,它是一种数组类型。收藏 导航属性不能是数组。
如何将此对象插入我的数据库?
更新
我的 JSON 文件中的每个部分都有一个表,因为我的类库是从 JSON 文件自动生成的。不平衡表如下所示:
【问题讨论】:
-
你的上下文是什么样的?你为不平衡创建了一个表吗?他们有身份证吗?您不能在数据库中插入一组匿名对象。
-
与您的问题无关,但我不喜欢名为 RootObject 的表。因为 Json2Csharp 以这种方式命名对象。
-
我认为结合下面@nAviD 的回答。只是在 mo 测试一切。我同意你关于 RootObject 名称的看法,一旦我离开开发,我将更改它。
标签: c# json sql-server