0

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) フィールドでエラーが発生するのはなぜですか

4

1 に答える 1

2

テーブル全体が必要ない場合は、 を呼び出すだけではありませんToList()DbSetこれまで見てきたように、すべてのテーブルを取得するだけですSelect。Select ステートメントは、 1 つのデータ セットから新しい形式 (新しいクラス、モデル、無名オブジェクト) への射影。

于 2013-09-08T18:34:04.987 に答える