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 であり、選択した 4 つのフィールドを含む Invoice テーブルを返します。しかし今は、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 は接続文字列名、Invoice はテーブル、Vuitton は .edmx クラスです。これは、Select ステートメントを使用しなくても実現できると聞きました。モデル クラスを LinQ エンティティにリンクしていないように見えますが、コンテキスト クラスを追加すると、List{InvoiceModel} クラスの inv."FieldName" 列にエラーがスローされます。
TLDR バージョン: テーブル全体ではなく、DbContext クラスから選択したフィールドを返すにはどうすればよいですか DBContext クラスを追加すると List(ModelClass) フィールドでエラーが発生するのはなぜですか