2016-06-23 2 views
0

C#을 사용하여 데이터 그리드의 SQL 서버 데이터베이스에 저장된 데이터를 표시하고 싶습니다. this examples on msdn을 따라했지만 형식 변환 오류가 발생했습니다. Visual Studio 2013을 사용하고 있습니다.C#의 데이터 형식 변환 오류

SQL 서버에 연결되어 있으며 myEntity라는 ado.net 데이터 모델을 만들었습니다. 이 모델에는 여러 개의 테이블이 있는데 그 중 하나 인 Theater는 화면에 표시하려고합니다.

using System.Data.Entity.Core.Objects; 
using System.Windows; 
using System.Windows.Controls; 
using System.Linq; 

namespace XYZ 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public sealed partial class MainPage : Page 
    { 
     myEntities dataEntites = new myEntities(); 

     public MainPage() 
     { 
      InitializeComponent(); 
     } 

     private void Data_Loaded(object sender, RoutedEventArgs e) 
     { 
       ObjectQuery<Theater> theaters = dataEntites.Theaters; 

       var query = from theater in theaters 
          where theater.type == "Big" 
          orderby theater.id 
          select new 
          { 
           theater.State, 
           theater.City, 
           theater.Type, 
           theater.Id, 
           theater.Name, 
           theater.Capacity 
           ... 
          }; 

       dataGrid1.ItemsSource = query.ToList(); 
     } 
    } 
} 

난에 오류 메시지가 발생 다음 MainWindow.xaml.cs를 내가 가진 파일에 내가

<Page x:Class="XYZ.MainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="theater List" Height="350" Width="525" 
     Loaded="Data_Loaded"> 
    <Grid> 
     <DataGrid Name="dataGrid1"></DataGrid> 
    </Grid> 
</Page> 

이있는 MainWindow.xaml 파일에 : 여기

내가 가진 무엇 상태 라인

ObjectQuery<Theater> theaters = dataEntites.Theaters; 

:

암시 유형 'System.Data.Entity.DbSet<XYZ.Theater>' 나는이 문제를 해결할 수있는 방법을

'System.Data.Entity.Core.Objects.ObjectQuery<XYZ.Theater>'로 변환 할 수 없습니다? 감사. 여기

+0

그럼 당신은 당신이'하여 ObjectQuery '필요가 있다고 생각 어떤 이유가? 나는 아마도 변수를'IQueryable '유형으로 선언 할 것이다. ... –

+0

가능한 복제 http://stackoverflow.com/a/11262713/5922757 – Jezor

+0

아무 것도하지 않고 예제를 따라 해보자. IQueryable 을 사용해 보겠습니다. – Hank

답변

1

문제는 System.Data.Entity.Core.Objects.ObjectQuery<T>System.Data.Entity.DbSet<T>에서 상속하지 않으므로 하나 개의 클래스의 목적은합니다 (implicit type conversion operator 경우가있는 오버라이드 (override) 할 것이라고 기대하는) 암시 적으로 서로 변환 할 수없는 것입니다.

그래서 당신은 단순히 DbSet<Theater>ObjectQuery<Theater>에서 변수 극장의 유형을 변경해야합니다 :

   DbSet<Theater> theaters = dataEntites.Theaters; 

       var query = from theater in theaters 
         where theater.type == "Big" 
         orderby theater.id 
         select new 
         { 
          theater.State, 
          theater.City, 
          theater.Type, 
          theater.Id, 
          theater.Name, 
          theater.Capacity 
          ... 
         }; 
+0

감사합니다. 뷰어의 경우 BbSet 은 System.Data.Entity 네임 스페이스를 사용합니다. – Hank