У меня есть пара вопросов относительно DBContext и достижения моих желаемых результатов. я могу получить данные, как этотИспользование DBContext для выбора полей
---Model
public class InvoiceModel
{
[Key]
public int? Invoice_Number { get; set; }
public decimal Amt_Total { get; set; }
public decimal Amt_Due { get; set; }
public decimal Amt_Paid { get; set; }
public List<InvoiceModel> GetInvoice()
{
using (VuittonEntities db = new VuittonEntities())
{
return (from inv in db.Invoice
select new InvoiceModel
{
Invoice_Number = inv.Invoice_,
Amt_Total = inv.AmountTotal,
Amt_Due = inv.AmountDue,
Amt_Paid = inv.AmountPaid
}).ToList();
}
}
--- Controller
public ViewResult Index()
{
var data = new InvoiceModel().GetInvoice();
return View(data);
}
Это в значительной степени стандарт LinQ и возвращает свою таблицу Invoice с 4 полями я выбрал. Но теперь я хочу достичь этого, используя DB Context. Поэтому я добавил этот новый класс к моему контроллеру и назвал его в представлении следующим образом.
Controller
public class VuittonEntities : DbContext
{
public DbSet<InvoiceModel> Invoice { get; set; }
}
View
public ViewResult Index()
{
VuittonEntities db = new VuittonEntities();
return View(db.Invoice.ToList());
}
Он возвращает всю таблицу, и я должен прокомментировать мой List'InvoiceModel»класса
Предположения: VuittonEntities через соединение String Name, счет-фактура является таблица Vuitton мой класс EDMX- - Я слышал, что это может быть достигнуто без использования инструкции Select. Похоже, что я не привязываю свой класс модели к объекту LinQ, но когда я добавляю свой класс контекста, он выдает ошибки в столбцах invIn. "FieldName" в моем классе List {InvoiceModel}.
TLDR Версия: Как я могу вернуть выбранные поля из DbContext класса вместо всей таблицы Почему добавление класса DbContext вызывать ошибки в моем списке (ModelClass) полей
Хорошо, мне сказали, что выбор не нужен, но есть другой способ, любая идея по этому поводу? Кроме того, можете ли вы пролить свет на причину ошибок класса List, когда я добавляю класс DbContext? – CSharper
Единственный способ, которым я мог думать о том, что он работает без 'Select' с моей головы, с помощью представления SQL и отображения представления в вашем DbContext ... Я бы, вероятно, в конечном итоге придерживался Select, хотя .. Кроме того, если вы хотите помочь с ошибкой, вы должны сказать, что это за ошибка! Наконец, я бы серьезно подумал о том, чтобы отделить часть вашей логики, например, метод GetInvoice INSIDE класса InvoiceModel, который действительно должен быть в другом месте, например, на уровне сервиса или в репозитории. Наконец, ваш ключ не должен быть нулевым для вашего объекта, хранящегося в базе данных. – tostringtheory
ваше право Я не должен иметь этот столбец с нулевым значением, у меня есть поле идентификатора, которое я буду использовать вместо этого. Мое поле inv. Указывает на мой сущность, но когда я вхожу в поле контекста DB, вместо этого он указывает на мой класс модели. Я планировал переместить его в слой данных, я хотел, чтобы это работало, прежде чем я добавил еще один шаг, я сейчас попробую, и посмотрю, что произойдет. – CSharper