Web API方法返回重复的记录

时间:2015-12-14 22:50:52

标签: entity-framework asp.net-web-api odata

我创建了我认为是在数据库视图上选择的简单控制器。但是,第一个记录在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字符串发送时,它是重复的。

有没有人经历过这样的事情?

1 个答案:

答案 0 :(得分:0)

好的,原来我没有在Entity Framework中正确设置密钥。我最终使用的密钥是位置,日期和指标的复合键。一旦在框架模型中选择了这些密钥,所有密钥都按预期工作。