Как устранить ошибку веб-API 'System.OutOfMemoryException' - PullRequest
0 голосов
/ 05 марта 2020

Я создаю ASP. Net MVC WebApi , чтобы поделиться своими данными с банком. В связи с этим я создал бит SQL View , когда я тестирую свой WebApi, он выдает ошибку 'System.OutOfMemoryException' , потому что у меня более 1 миллиона записей в SQL Просмотр. Мой код указан ниже: - Это мой контроллер

 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; }
    }

1 Ответ

0 голосов
/ 06 марта 2020

Я считаю, что вам нужно сериализовать объектную модель, используя запрос select.

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();
        }
    }
}
...