c# - WebApi c#rest web service不能传递对象列表
问题描述
我正在构建一个简单的完整的 web 服务来将数据存储到数据库中。
所以这是我的代码:
[Route("InsertActivities")]
[HttpPost]
public HttpResponseMessage InsertActivities(ActivityExecutionDTO u)
{
try
{
if (u != null)
{
//TO DO
}
}
catch (Exception e)
{
}
}
这是 ActivityExecutionDTO 类:
namespace WebService.Models
{
[DataContract(Name = "ActivityExecutionDTO")]
public class ActivityExecutionDTO
{
[DataMember(Name = "Username", Order = 1)]
public string UserName { get; set; }
[DataMember(Name = "Password", Order = 2)]
public string Password { get; set; }
[DataMember(Name = "IdClinicalDocument", Order = 3)]
public int IdClinicalDocument { get; set; }
[DataMember(Name = "ActivityDetails", Order = 4)]
public IQueryable<ActivityExecutionDetailDTO> ActivityDetails { get; set; }
}
}
ActivityExecutionDetailDTO 类:
namespace WebService.Models
{
[DataContract]
public class ActivityExecutionDetailDTO
{
[DataMember(Name = "Id")]
public int ID { get; set; }
[DataMember(Name = "IdClinicalDocument"), IgnoreDataMember]
public int IdClinicalDocument { get; set; }
[DataMember(Name ="IdActivity")]
public int IdActivity { get; set; }
[DataMember(Name = "DateExecution"), IgnoreDataMember]
public DateTime? DateExecution { get; set; }
[DataMember(Name = "Duration")]
public Int32? Duration { get; set; }
[DataMember(Name = "CalBurned")]
public Int32? CalBurned { get; set; }
[DataMember(Name = "Steps")]
public Int32? Steps { get; set; }
}
}
所以这是我通过 PostMan 客户端传递的 JSON:
{
"Username" : "t.g",
"Password" : "t",
"IdClinicalDocument" : 63,
"ActivityDetails" :
[
{
"Id" : 1,
"IdClinicalDocument" : 63,
"IdActivity" : 1,
"DateExecution" : null,
"Duration" : 150,
"CalBurned" : 9600,
"Steps" : 150
}
]
}
因此,如果我尝试检查我的代码此代码:
u.ActivityDetails
每次都是空的。
活动列表为空。错误在哪里?
解决方案
更改IQueryable<ActivityExecutionDetailDTO>
为ICollection<ActivityExecutionDetailDTO>
IQueryable 仅存储查询定义,其中不能有数据,而是 ICollection。
推荐阅读
- azure-devops - 为某些团队简化了 VSTS 工作项表单?
- c# - 使用 LINQ GroupBy 获取忽略属性的唯一集合
- vb.net - VB.NET 我生成了图片框并将其循环到我的 rows.Count,问题是我如何调用 PHOTOS?
- javascript - 放入事件循环的 JavaScript 函数
- python - 通过 R 或 Python 在 Google 和 Apple Store 中安装/下载应用程序
- kubernetes - rancher 2.x 通过入口控制器返回 404
- python - 在不计算导数的情况下最大化函数 f(x)
- java - Java 创建 LinkedHashMap
- excel - Selenium 和 VBA 的错误 7 内存不足
- android - 在 android 应用程序的嵌入式 Youtube 播放器中,实时视频在 2 秒后停止播放