2012-09-17 2 views
1

나는 무엇보다도 new (noob)입니다. 아마 내 질문은 매우 바보 같지만 막혔다. 여기 상황이 있습니다.linq 쿼리 (EF)에 대한 클래스를 만드는 방법

EF 5.0을 사용하여 winforms 데이터베이스 응용 프로그램을 프로그래밍하기 시작했습니다.

private void Form1_Load(object sender, EventArgs e) 
{   
    using (var ctx = new pehkEntities()) 
    { 
     var result = from k in ctx.Kolons 
        select new 
        { 
         KolonAdı = k.KolonAdi, 
         En = k.En, 
         Boy = k.Boy, 
         Yükseklik = k.Yukseklik, 
         ID = k.KolonID 
        }; 


     dataGridView1.DataSource = result.ToList(); 
    } 
} 

하지만 내 Form1의 코드는 정말 지금 엉망이되고 나는 클래스와 메소드를 사용하여 청소하려면 : 모든 내가 이런 형태로 원하는 것을 할 수 괜찮습니다. program.cs에서 클래스와 메서드를 만들려고했지만 실패했습니다. 어떻게 수정해야합니까?

public class veritabani_islemleri 
{ 
    public ???? kolonlistele() 
    { 
    using(pehkEntities ctx = new pehkEntities()) 



     var result =from k in ctx.Kolons 
       select new 
       { 
        KolonAdı = k.KolonAdi, 
        En = k.En, 
        Boy = k.Boy, 
        Yükseklik = k.Yukseklik, 
        ID = k.KolonID 
       }; 

     return ???? 
    } 
} 

내 문제는 내가 물음표를 채울 수 없다는 점입니다. 그냥 내 양식에서이 작업을 수행하려고합니다.

내 방법이 완전히 잘못되었을 때 어떻게해야합니까? 이를 위해

+1

체크 아웃이 주제 : http://stackoverflow.com/questions/1070526/how-to-return-anonymous-type-from-c-sharp-method-that-uses-linq-to-sql – onnovalkering

+0

가능한 중복 [LINQ to SQL : 익명 형식을 반환 하시겠습니까?] (http://stackoverflow.com/questions/534690/linq-to-sql-return-anonymous-type) – PHeiberg

+0

가능한 [C# 익명 유형 개체 액세스] (http : //stackoverflow.com/questions/713521/accessing-c-sharp-anonymous-type-objects) – nawfal

답변

2

: 당신은 아래의 단계를 따르십시오 : -

  1. 뷰 모델 클래스
  2. 만들기를 그리고 형태로 reuired 된 속성을 만들
  3. 그런 다음 정적 메서드를 작성하는 것입니다 재산
  4. 그런 다음 양식에서 해당 모델을 사용하십시오. 예를 들어

:

public class veritabani_islemleriModel{ 
public String KolonAdi { get; set; } 
public String En { get; set; } 
public String Boy { get; set; } 
public String Yükseklik { get; set; } 
public String ID { get; set; } 
} 

and then 
public class veritabani_islemleri 
{ 
    public List<veritabani_islemleriModel> kolonlistele() 
    { 
    using(pehkEntities ctx = new pehkEntities()) 



     var result =from k in ctx.Kolons 
       select new veritabani_islemleriModel 
       { 
        KolonAdı = k.KolonAdi, 
        En = k.En, 
        Boy = k.Boy, 
        Yükseklik = k.Yukseklik, 
        ID = k.KolonID 
       }; 

     return result.Tolist(); 
    } 
} 
+0

THX! 이게 내 문제를 해결하고 많은 것을 배웠습니다. 이제 또 하나의 질문이 있습니다. u는 터키어를 알지 못하므로 String으로 En (Boy, Yukseklik) 변수를 정의했습니다. 그들은 int이고 int로 정의했습니다. 그러나 그것은 효과가 없었습니다. 오류 메시지 : "int를 int로 변환 할 수 없습니다"또는 smt. 그래서 저는 그것들을 "int"라고 정의했습니다. 하지만 왜? 데이터베이스에서 그들은 int하지만 C# "int?" 뭔가 잘못 됐어? – Hasan

+0

데이터베이스가 표시되면 null 가능 유형이므로 엔티티 프레임 작업 클래스에서 속성 유형이 int 인 이유는 무엇입니까? 그래서 int를 선언해야합니까? 우리 모델에 입력하십시오. – Pushpendra

+0

그래, 내가 해냈어. 당신은 그들이 nullable다는 것을 맞습니다. 도움을위한 thx! – Hasan

1

현재 LINQ 쿼리는 "익명 형식"(see here)라고 불리는 반환합니다. 빌드시에 컴파일러는 실제로 모든 올바른 속성을 가진 데이터를 보유 할 클래스를 만듭니다. 그러나 C#은 함수에서 익명 형식을 반환 할 수 없기 때문에 반환 할 형식을 알지 못합니다.

public class veritabani_islemleriModel{ 
public String KolonAdi { get; set; } 
public String En { get; set; } 
public String Boy { get; set; } 
public String Yükseklik { get; set; } 
public String ID { get; set; } 
} 

지금 당신은 당신이 사용할 수있는 실제 유형 veritabani_islemleriModel이 있습니다

이 문제를 해결하는 가장 좋은 방법은 Pushpendra 자신의 대답에 무엇을있는 데이터를 보유 할 자신의 실제 클래스를 만드는 것입니다 컴파일러 대신 익명 형식의 서명 및 반환 문을 사용합니다.