0


我是 Entity Framework 的新手,但我试图亲身体验它。在浏览了许多博客之后,我开始在我的项目中实现它,但我遇到了以下问题。

我有 VS 2012 并且正在开发 4.0 版的项目。
我在我的项目中添加了DataModel.edmx文件,这又创建了 4 个文件 DataModel.Context.tt , DataModel.Designer.cs , DataModel.edmx.diagram , DataModel.tt

到目前为止看起来还不错。但是当我尝试访问我的 Linq 查询中的表信息时。Intellisense 没有显示任何内容。

var context = new DataModelEntities();
var invoice = from c in context.Invoice select c.{//NOTHING SHOWING HERE};

DataModelEntities 类(DataModel.Context.cs)看起来像

namespace MySpace.Objects.DataModel
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class DataModelEntities : DbContext
    {
        public DataModelEntities()
            : base("name=KKEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public DbSet<Invoice> Invoice { get; set; }
        public DbSet<InvoiceContracts> InvoiceContracts { get; set; }
    }
}

发票类如下所示:

//----------- 
// <auto-generated> 
// This code was generated from a template. 
// 
// Manual changes to this file may cause unexpected behavior in your application. 
// Manual changes to this file will be overwritten if the code is regenerated. 
// </auto-generated> 
//-------- 
namespace MySpace.Objects.DataModel 
{ 
  using System; 
  using System.Collections.Generic; 

  public partial class Invoice
  {
     public int ID { get; set; }
     public int POID { get; set; }
  } 
}

如果我遗漏了什么,请告诉我。

谢谢...

4

2 回答 2

0

这只是一个查询规范(类型IQueryable<Invoice>):

var invoiceQuery = from c in context.Invoice select c;

invoiceQuery是比invoice这里更好的名称。)它不是执行查询的结果,并且此时尚未将查询发送到数据库。要获得查询结果,您必须应用导致查询执行的运算符,例如ToList()orFirstOrDefault()等​​:

var invoices = invoiceQuery.ToList();

这是类型List<Invoice>

于 2012-12-21T16:30:54.993 回答
0

改名

public DbSet<Invoice> Invoice { get; set; }

 public DbSet<Invoice> Invoices { get; set; }

然后尝试

var invoice =  c in context.Invoices.Select( c=>c.HERE)
于 2012-12-21T15:28:42.173 回答