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 个字段的发票表。但现在我想使用 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 语句旨在创建一个从一组数据投影到新形式(新类、模型、匿名对象)。

于 2013-09-08T18:34:04.987 回答