我创建了我认为是在数据库视图上选择的简单控制器。但是,第一个记录在JSON结果中多次返回。例如,当使用Odata进行过滤时,预计会有7个不同的记录,但是会返回7个相同的记录。
这是控制器代码:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using MyAPI.WebAPI.Models;
using System.Web.OData;
using System.Security.Principal;
using System.Web;
namespace MyAPI.WebAPI.Controllers
{
public class MyViewController : ApiController
{
private MyEntities db = new MyEntities();
// GET
[EnableQuery] // Enables OData query integration
public IHttpActionResult GetMetrics()
{
return Ok(db.ViewResults.AsQueryable());
}
}
}
在return语句中使用断点时,我可以看到查询中返回所有4000个结果的位置,而OData似乎只过滤了我需要的7条记录,但是当它通过JSON字符串发送时,它是重复的。
有没有人经历过这样的事情?
答案 0 :(得分:0)
好的,原来我没有在Entity Framework中正确设置密钥。我最终使用的密钥是位置,日期和指标的复合键。一旦在框架模型中选择了这些密钥,所有密钥都按预期工作。