entity-framework - i:nill="true" 出现在响应中
问题描述
我有一个模型-
public class EmployeeModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Designation { get; set; }
public double? Salary { get; set; }
}
以及类似的LINQ
方法语法 -
public List<EmployeeModel> GetEmployees()
{
using (var DbCon = new OfficeEntities())
{
var result = DbCon.Employee.Select(x => new EmployeeModel()
{
Id = x.Id,
Name = x.Name
//Salary = x.Salary,
//Designation = x.Designation
})
.ToList();
return result;
}
}
我已经注释掉了薪水和职务,但即使它打印了 key : Salary and for valuei:null="true"
为什么结果会这样
<EmployeeModel>
<Designation i:nil="true"/>
<Id>1</Id>
<Name>Sulochana </Name>
<Salary i:nil="true"/>
</EmployeeModel>
即使注释/删除了查询中的参数,为什么它会出现在结果中。请帮助
解决方案
您正在投影中创建一个EmployeeModel
对象。Select
因此,Salary
并且Designation
正在使用它们的默认值进行初始化,即使您没有为它们设置值。然后在序列化后所有属性都出现在结果中。
如果您只期望在输出/结果中Id
,Name
则在该形状中定义一个类型 -
public class EmployeeInfo
{
public int Id { get; set; }
public string Name { get; set; }
}
并在投影中创建该类型的对象 -
var result = DbCon.Employee.Select(x => new EmployeeInfo()
{
Id = x.Id,
Name = x.Name
})
.ToList();
推荐阅读
- keras - ImportError:无法从“keras.utils”导入名称“Sequence”
- c# - 无法自定义颜色跨度 asp-validation-for .net core mvc
- python - 如何使用任意参数列表 (vararg) 键入可调用对象
- php - Laravel HTTP 测试:如何在假回调中使用序列
- dialogflow-es - 无法在对话流中创建代理
- azure - 无法访问部署到 VN 的 ACI restful 端点
- mysql - 检查文本开头的空格(MYSQL 查询)
- typescript - 扩展日期类型时属性不存在
- r - How to loop multiple .Rdata objects from AWS/S3 into a list in R
- ansible - Ansible 更新嵌套列表