【发布时间】:2020-12-01 03:37:51
【问题描述】:
我从 API 中提取了一些 JSON 数据,现在我正尝试将其反序列化为一个对象并将这些对象保存到我使用实体框架创建的 SQL Server 数据库中。以下代码不允许我将数据添加到 Customers 表中,因为数据库不接受列表。
string apiResponse = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<List<Root>>(apiResponse);
db.Customers.AddRange(data);
db.SaveChanges();
以下代码也不起作用。我认为这可能与使用Customers 列表而不是<Root> 列表有关。但是我不想在我的数据库中创建一个Root 表,我宁愿只有一个Customers 的表而没有Root 表。
List<Customers> customers = new List<Customers>();
string apiResponse = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<Customers>(apiResponse);
customers.Add(data);
db.Customers.AddRange(data);
db.SaveChanges();
Json
[
{
"id": "1asda3",
"name": "Customer1"
},
{
"id": "asda2",
"name": "Customer2"
},
{
"id": "gfh234",
"name": "Customer3"
},
{
"id": "fdg312",
"name": "Customer4"
}
]
型号:
public class Root
{
public List<Customers> Customers { get; set; }
}
public class Customers
{
[JsonProperty("id")]
public string id { get; set; }
[JsonProperty("name")]
public string name { get; set; }
}
数据库上下文:
public DbSet<Customers> Customers { get; set; }
public DbSet<Root> Root { get; set; }
编辑
我通过简单地从我的模型中删除公共类 Root 解决了我的问题。并通过使用:
string apiResponse = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<List<Customers>>(apiResponse);
db.Customers.AddRange(data);
db.SaveChanges();
【问题讨论】:
-
db.Customers.AddRange(JsonConvert.DeserializeObject<List<Customers>>(apiResponse));? -
请粘贴您收到的异常信息
-
我认为您的意思是使用客户而不是数据,
db.Customers.AddRange(>>customers<<)
标签: c# asp.net asp.net-mvc asp.net-core asp.net-web-api