2014-10-20 111 views
1

我是Entity Framework的初学者。我正在构建一个WPF应用程序。以下是我的模型类:使用实体框架从数据库中检索数据

[Table("Vehicle")] 
    public class Vehicle 
    { 
     [Key] 
     public int VehicleId { get; set; } 
     [Column("LicencePlateNumber", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string LicencePlateNumber { get; set; } 
     [Column("LicencePlateState", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string LicencePlateState { get; set; } 
     [Column("Make", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string Make { get; set; } 
     [Column("Other", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string Other { get; set; } 
     [Column("Model", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string Model { get; set; } 
     [Column("Style", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string Style { get; set; } 
     [Column("Color", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string Color { get; set; } 
     [Column("PurchaseYear", TypeName = "int")] 
     public int PurchaseYear { get; set; } 
     [Column("InsurnaceCompanyName", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string InsurnaceCompanyName { get; set; } 
     [Column("InsurnaceCompanyNumber", TypeName = "ntext")] 
     [MaxLength(100)] 
     public string InsurnaceCompanyNumber { get; set; } 
    } 

我想从datagrid中的表中检索数据。

using (var context = new TransportContext()) 
{     
     var vehicleList = from v in context.Vehicles 
         select new 
         { 
           Number = v.LicencePlateNumber, 
           Make = v.Make, 
           Model = v.Model, 
           Year = v.PurchaseYear 
         }; 
        DG_Details.ItemsSource = vehicleList; 
        DG_Details.Items.Refresh(); 
    } 

但是我得到XAMLParseException。另一方面,如果我尝试这个,那么它的工作原理:

using (var context = new TransportContext()) 
{    
     var projectionQuery = from v in context.Vehicles 
            select v; 
      var vehicleList = projectionQuery.ToList<Vehicle>(); 
        DG_Details.ItemsSource = vehicleList; 
        DG_Details.Items.Refresh(); 
    } 

但我想检索只有4列并非全部。需要帮忙!!

+0

什么是你的异常信息?我怀疑这是因为你的vehicleList是一个匿名类型。您可以尝试创建一个定义了这四个属性的类,并在您的linq语句中创建一个新实例。您的绑定将更容易,因为您将拥有强大的类型。 – kidshaw 2014-10-20 07:49:33

回答

4

试试这个:

var vehicleList = (from v in context.Vehicles 
         select new 
         { 
           Number = v.LicencePlateNumber, 
           Make = v.Make, 
           Model = v.Model, 
           Year = v.PurchaseYear 
         }).ToList(); 
        DG_Details.ItemsSource = vehicleList; 
        DG_Details.Items.Refresh(); 
+0

谢谢它的作品! – 2014-10-20 07:51:32

+0

@NileshBarai不客气。 :) – 2014-10-20 07:56:01