我的控制器之一有点问题。
每次我尝试用参数调用某个函数时抛出500,而在调试时我可以看到该函数甚至没有被调用。
首先是我的WebApiConfig:
html.push("<table id='table'></table>");
html.push("<div id='jqGridPager'></div>");
$('body').append(html.join(""));
我的实体:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Entity>("Entities");
builder.EntitySet<DataTypes>("DataTypes");
builder.EntitySet<ObjectValue>("ObjectValues");
builder.EntitySet<Attributes>("Attributes");
builder.EntitySet<Objects>("Objects");
builder.Namespace = "EAVService.Controllers";
builder.Action("FullAttributes").Returns<IHttpActionResult>()
.CollectionParameter<Attributes>("Attributes");
builder.Action("FullValues").Returns<IHttpActionResult>()
.CollectionParameter<ObjectValue>("ObjectValue");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
}
}
和我的控制器:
[Table("ObjectValue")]
public partial class ObjectValue
{
public ObjectValue()
{
}
[Key]
[Column(Order = 0)]
public int ObjectId { get; set; }
[Key]
[Column(Order = 1)]
[StringLength(50)]
public string Attribute { get; set; }
[StringLength(256)]
public string AttributeVal { get; set; }
public virtual Attributes Attributes { get; set; }
public virtual Objects Objects { get; set; }
}
....}
第一个Get方法正常运行。
说到参数第二次获取内部服务器错误。
http://localhost:80/EAVServiceAPI/odata/ObjectValues(1)
有人能给我一些暗示可能出错的事吗?
此致 安德烈
答案 0 :(得分:0)
使用密钥的方法应返回ObjectValue
而不是IQueryable<ObjectValue>
且key
参数错误,它与ObjectValue
对象上的密钥不匹配。您的意思是ObjectId
上的Attribute
和ObjectValue
上有关键属性吗?如果是这样,您需要在GetObjectValues
方法上使用名称与键匹配的2个关键参数,否则请删除其中一个Key
属性,并确保key
参数的类型与类型匹配ObjectValue
上的密钥。
答案 1 :(得分:0)