Key attribute doesn't work for string (reference type) property.
Example
-----
private static IEdmModel GetEdmModel()
{
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Item>("Items");
return modelBuilder.GetEdmModel();
}
public class Item
{
[Key]
public string Name { get; set; }
public string RefProp { get; set; }
public decimal ValProp { get; set; }
}
Metadata
-----
<EntityType Name="Item">
<Key>
<PropertyRef Name="Name" />
</Key>
<Property Name="Name" Type="Edm.String" />
<Property Name="RefProp" Type="Edm.String" />
<Property Name="ValProp " Type="Edm.Decimal" Nullable="false" />
</EntityType>
'Name' parameter needs to be shown as Nullable="False" in the metadata document.
Example
-----
private static IEdmModel GetEdmModel()
{
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Item>("Items");
return modelBuilder.GetEdmModel();
}
public class Item
{
[Key]
public string Name { get; set; }
public string RefProp { get; set; }
public decimal ValProp { get; set; }
}
Metadata
-----
<EntityType Name="Item">
<Key>
<PropertyRef Name="Name" />
</Key>
<Property Name="Name" Type="Edm.String" />
<Property Name="RefProp" Type="Edm.String" />
<Property Name="ValProp " Type="Edm.Decimal" Nullable="false" />
</EntityType>
'Name' parameter needs to be shown as Nullable="False" in the metadata document.