2014-10-20 3 views
1

Я начинаю с Entity Framework. Я создаю приложение WPF. Ниже приведен мой модельный класс:Извлечение данных из базы данных с использованием Entity Framework

[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. На Otherhand, если я попробую это, то он работает:

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

Что такое ваше сообщение исключение? Я подозреваю, что это потому, что ваш автомобиль-лист является анонимным. Вы можете попробовать создать класс с указанными четырьмя указанными свойствами и создать новый экземпляр в своем выражении linq. Ваша привязка будет проще, так как у вас будет сильный тип. – kidshaw

ответ

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

спасибо, что это работает !! –

+0

@NileshBarai Добро пожаловать. :) –