如何在web api中使属性可以为空

时间:2014-04-02 22:59:40

标签: c# asp.net-web-api odata

对于模型文件,如下所示:

public class WebApiEntity
{
  public string id { get; set; }
  public Collection<CData> data { get; set; }
}


public class CData
{
  public string CType { get; set; }

  public string CId { get; set; }
}

当我使用服务引用生成ODATA客户端时,它看起来像:

<EntityType Name="WebApiEntity">
    <Key>
    <PropertyRef Name="id" />
    </Key>
    <Property Name="id" Type="Edm.String" Nullable="false" />
    <Property Name="data" Type="Collection(NamespaceValue.CData)" Nullable="false" />
</EntityType>

将nullable属性设置为FALSE。如何将其设置为TRUE我需要做什么。 似乎Nullable&lt;&gt;不能在这里使用。感谢这里的任何帮助。

2 个答案:

答案 0 :(得分:0)

请试试这个:

ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
var collectionProperty = builder.EntityType<WebApiEntity>().CollectionProperty<CData>(c=>c.data);
collectionProperty.IsOptional();

答案 1 :(得分:0)

可能对某人有用。 解决方案之一是使用CData作为结构类型(但会受到一些限制)。结构是值类型。

public class WebApiEntity
{
    public Collection<CData> data { get; set; }
    public Collection<(String CType, String CId)> data_tuple { get; set; } 
}

public struct CData
{
    public string CType { get; set; }
    public string CId { get; set; }
}

OData元数据:

<Property Name="data" Type="Collection(Diagnostics.Data.Diagnostics.CData)"/>
<Property Name="data_tuple" Type="Collection(System.ValueTuple_2OfString_String)"/>

OData metadata pic