如何解决Web api错误'System.OutOfMemoryException'

问题描述 投票:0回答:1

我正在创建ASP.Net MVC WebApi以将我的数据共享给银行。在这方面,我在测试WebApi时创建了SQL View位,它给出了'System.OutOfMemoryException'错误,因为我在SQL View中拥有100万条记录。我的代码如下:这是我的控制器

 public class InvoiceController : ApiController
    {
        public IEnumerable<VBank_invoice> Get()
        {
            using (kmcEntities entities = new kmcEntities())
            {
                return entities.VBank_invoice.ToList();
            }
        }

        public VBank_invoice Get(string consumer)
        {
            using (kmcEntities entities = new kmcEntities())
            {
                return entities.VBank_invoice.FirstOrDefault(e => e.consumer_no == consumer);
            }
        }
    }

我的SQL视图类

public partial class VBank_invoice
    {
        public int sno { get; set; }
        public string consumer_no { get; set; }
        public string consumer_name { get; set; }
        public string consumer_address { get; set; }
        public string billing_month { get; set; }
        public Nullable<decimal> current_Charges { get; set; }
        public Nullable<decimal> outstanding_Arrears { get; set; }
        public Nullable<decimal> Arrears_15 { get; set; }
        public Nullable<decimal> part_payment_arrears { get; set; }
        public string billing_period_code { get; set; }
        public string consumer_checkdigit { get; set; }
        public Nullable<System.DateTime> due_date { get; set; }
    }

这是我的Model.Context.cs文件

 public partial class kmcEntities : DbContext
    {
        public kmcEntities()
            : base("name=kmcEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<VBank_invoice> VBank_invoice { get; set; }
    }
asp.net-mvc asp.net-mvc-3 asp.net-web-api asp.net-web-api2 sql-view
1个回答
0
投票

我相信您需要使用选择查询来序列化对象模型。

public class InvoiceController : ApiController
{
    public IEnumerable<VBank_invoice> Get()
    {
        using (kmcEntities entities = new kmcEntities())
        {
            return entities.VBank_invoice.select(m => new {
           m.sno, m.consumer_no,m.consumer_name,  m.consumer_address, 
           m.billing_month, m.current_Charges, m.outstanding_Arrears, 
           m.Arrears_15, m.part_payment_arrears, m.billing_period_code, 
           m.consumer_checkdigit, m.due_date }).ToList();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.