Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework EntityFramwork和WebApi:复杂类型的问题_Entity Framework_Odata_Asp.net Web Api2 - Fatal编程技术网

Entity framework EntityFramwork和WebApi:复杂类型的问题

Entity framework EntityFramwork和WebApi:复杂类型的问题,entity-framework,odata,asp.net-web-api2,Entity Framework,Odata,Asp.net Web Api2,我目前正在使用CodeFirst和使用WebAPI 2.2的Odata V4。事实证明,在执行任何数据库操作之前,EF代码首先需要实例化所有的ComplexTypes,因此我将模型类更改为在实体的构造函数中实例化复杂类型。这起作用,数据保存在数据库中 问题: 在Odata上,复杂类型现在被序列化为复杂类型成员的所有空值。从API的用户体验角度来看,我希望避免这种情况 { "CorrelationInfo":{ "ParentIncidentId":null,"Correlated

我目前正在使用CodeFirst和使用WebAPI 2.2的Odata V4。事实证明,在执行任何数据库操作之前,EF代码首先需要实例化所有的ComplexTypes,因此我将模型类更改为在实体的构造函数中实例化复杂类型。这起作用,数据保存在数据库中

问题: 在Odata上,复杂类型现在被序列化为复杂类型成员的所有空值。从API的用户体验角度来看,我希望避免这种情况

{
    "CorrelationInfo":{
    "ParentIncidentId":null,"CorrelatedCount":0,"LastCorrelatedDate":null
  }
}
正如您在上面的odata响应示例中所看到的,复杂类型中的所有属性都有默认值。但我想把它曝光如下

{
   CorrelationInfo:null
}

如何解决这个问题??或者其他解决问题的方法?

如何将CorrelationInfo设置为Nullable,复杂类型默认为Nullable,然后您只需设置

CorrelationInfo = null
而不是

new CorrelationInfo()
最后你可以得到:

{
  CorrelationInfo:null
}

希望这能有所帮助:)

如上所述,如果我设置为null,那么代码首先会失败,因为它需要实例化复杂类型。这是EF的问题,我认为,也有一些类似的问题,如果compelxType已初始化,然后您将其返回给客户端,OData WebApi无法确定complexType是否为null,因为用户可以有一个具有所有默认值的complexType,如果您可以在控制器的方法中执行此操作,那么在返回类之前,将CorrelationInfo设置为null应该会得到预期的响应