Asp.net web api Web API自定义OData MediaTypeFormatter不';不尊重ModelBuilder信息
如果我为OData创建自定义媒体类型格式化程序,序列化程序将忽略我的fluent API调用以“忽略”某些属性 假设我有以下OData配置:Asp.net web api Web API自定义OData MediaTypeFormatter不';不尊重ModelBuilder信息,asp.net-web-api,odata,Asp.net Web Api,Odata,如果我为OData创建自定义媒体类型格式化程序,序列化程序将忽略我的fluent API调用以“忽略”某些属性 假设我有以下OData配置: public class Product { public int Id { get; set; } public string Name { get; set; } } public static class WebApiConfig { public static void Register(HttpConfiguration
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var builder = new ODataConventionModelBuilder();
var products = builder.EntitySet<Product>("Products");
products.EntityType.Ignore(e => e.Name); // IGNORE NAME FIELD
config.EnableQuerySupport();
config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel());
}
}
当然,如果我实现自己的ODataSerializerProvider
等,也会出现相同的结果,但出于示例的目的,我觉得值得指出的是,这种情况甚至会发生在默认实例上
如果我使用以下属性,则“忽略”将被接受:
public class Product
{
public int Id { get; set; }
[IgnoreDataMember]
public string Name { get; set; }
}
但是首先我不喜欢这种方法,其次我不能访问一些类来添加属性
有什么想法吗?找到了答案
而不是:
config.Formatters.InsertRange(0,
ODataMediaTypeFormatters.Create(
DefaultODataSerializerProvider.Instance,
DefaultODataDeserializerProvider.Instance));
使用:
还不明白为什么清楚的事情会影响“忽略”
config.Formatters.InsertRange(0,
ODataMediaTypeFormatters.Create(
DefaultODataSerializerProvider.Instance,
DefaultODataDeserializerProvider.Instance));
config.Formatters.Clear();
config.Formatters.AddRange(
ODataMediaTypeFormatters.Create(
DefaultODataSerializerProvider.Instance,
DefaultODataDeserializerProvider.Instance));