2008-11-03 5 views
5

저는 Toy라는 데이터베이스에서 생성 된 ADO.NET 엔터티 데이터 모델 인 Toy.edmx가 포함 된 Visual Basic WPF 응용 프로그램 프로젝트를 만들었습니다.부분 클래스로 ADO.NET Entity Framework 개체를 확장하는 방법은 무엇입니까?

Window1.xaml.vb는 파일은 다음과 같습니다 : 잘 실행

 
1 Class Window1 
2 
3  Private Sub Window1_Loaded(_ 
4  ByVal sender As System.Object, _ 
5  ByVal e As System.Windows.RoutedEventArgs) _ 
6  Handles MyBase.Loaded 
7 
8   Dim dc As New ToyEntities1 
9   Label1.Content = (From c As Client In dc.ClientSet _ 
10       Select c).First.FirstName 
11 
12  End Sub 
13 
14 End Class 

합니다.

, 나는

 
1 Partial Public Class Client 
2  Function IsWashington() As Boolean 
3   Return Me.LastName = "Washington" 
4  End Function 
5 End Class 

Client.vb ...

파일 을 추가 ... 그리고 ... 내 Window1.xaml.vb 쿼리에 WHERE 절을 추가하는 경우

Entiti에

LINQ :

 
9   Label1.Content = (From c As Client In dc.ClientSet _ 
10       Where c.IsWashington _ 
11       Select c).First.FirstName 

은 ... 나는이 NotSupportedException이 얻을 es '메서드가'Boolean IsWashington() '메서드를 인식하지 못하고이 메서드를 저장소 식으로 변환 할 수 없습니다.

어떻게 부분 클래스로 ADO.NET Entity Framework 개체를 확장합니까?

답변

2

문제는 코드를 작성하고 Entity Framework에서이를 SQL로 변환 할 것을 기대한다는 것입니다. LINQ to SQL처럼 그렇게 할 수 없습니다.

속성이 "C : \"드라이브에서 파일을 읽는다면 ... 어떻게 처리 할 것 같습니까? - 불가능합니다.

+0

나는 그것이 너무 가혹하지 않길 바란다. 내가 말하고자하는 것은 일단 쿼리가 "local"이라면 where 절을 추가 할 수있다. (하지만 LINQ to Objects이다. 수평). –

1

클라이언트 클래스는 어떤 유형입니까?

"IsWashington"이 들어있는 파일에 네임 스페이스 (클라이언트 "엔터티 클래스"가 정의 된 것과 동일)를 추가해야 할 수도 있습니다.

+0

내 대답에 어떤 문제가 있습니까? 어떻게 문제를 해결 했습니까? 감사합니다. – shahkalpesh

3

고객 쿼리에 필터를 적용하는 방법을 만드십시오.

나는 vb.net을 모르기 때문에,이 자유형 코드를 100 % 신뢰하지 마십시오.

Partial Public Class Client 
    Public Shared Function IsWashington(query As IQueryable(Of Client)) As IQueryable(Of Client) 
    Return query.Where(Function(someClient) someClient.LastName = "Washington") 
    End Function 
End Class 

나중에 일부 호출 코드.

IQueryable(Of Client) someQuery = dc.ClientSet.AsQueryable 
someQuery = Client.IsWashington(someQuery) 

Label1.Content = someQuery.First.FirstName 

희망 작품입니다.

+0

다음 페이지에서 문제에 대한 자세한 설명과 함께 블로그 항목을 찾을 수 있습니다. http://blog.genom-e.com/PermaLink,guid,4c486a95-12ad-4abf-aba1-7eb893c91ba7.aspx – csgero

1

보기에서 클라이언트 개체를 공급하면이 특정 문제를 해결할 수 있습니다. 비트 열 값을 설정하기 위해 SQL의 CASE 문을 사용하여

SELECT의 COL1, COL2, COL3, 성 CASE 성 언제 '워싱턴'ELSE 0 클라이언트

FROM IsWashington AS THEN 1 당신은을 사용하는 경우 클라이언트 엔터티 개체의 기본보기로 IsWashington 열은 다른 모든 열과 함께 클래스의 멤버가되어야합니다.

1

shahkalpesh가 정확하면 생성 된 클래스와 일치하도록 확장 클래스 주위에 네임 스페이스를 추가해야합니다.

관련 문제