2014-10-20 103 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