문제

함께 연결된 2 개의 다른 속성을 기반으로하는 기존 엔티티 유형에 새 속성을 만들 수 있는지 아는 사람이 있습니까?

예를 들어 내 개인 엔티티 유형에는이 필드가 "ID", "ForeName", "Surname", "DOB"에 있습니다.

나는 "fullname"이라는 새 필드를 만들고 싶습니다.

Forenames + " " + Surname

그래서 나는 "id", "forename", "surname", "dob", "fullname"으로 끝납니다.

나는 프로그래밍 방식으로 LINQ를 사용하여 이것을 할 수 있다는 것을 알고 있습니다.

var results = from p in db.People
select new { 
ID = p.ID, 
Forename = p.Forename, 
Surname = p.Surname, 
DOB = p.DOB,
Fullname = p.Forename+ " " + p.Surname
};

그런 다음 같은 것을 호출합니다

var resultsAfterConcat = from q in results 
where q.Fullname.Contains(value)
select q;

그러나 나는 개념적 모델 수준에서 나를 위해이 작업을 수행하기 위해 LINQ를 엔터티에 사용하고 싶습니다.

도움이 되었습니까?

해결책

아직은 아니지만 곧. 먼저, 제안 된 쿼리는 현재로서는 포함되지 않기 때문에 속성이 있거나없는 엔티티에 LINQ에서 전혀 작동하지 않습니다. 그러나 .NET 4.0의 엔티티 프레임 워크의 새로운 버전은 LINQ에서 엔티티 쿼리의 사용자 정의 메소드를 지원해야합니다. 너는 볼 수있어 PDC의 비디오에 대한 비디오. 본질적으로 사용자 정의 방법을 두 번 써야합니다. 코드에 한 번, 그리고 데이터베이스에서 한 번 (예 : 계산 된 필드). 자세한 내용은 비디오를 참조하십시오.

다른 팁

질문에 대한 답변을받은 후 몇 년 후에이 글을 읽는 사람에게는 다음과 같습니다.

여기에는 더 최신의 건조한 준수 답변이 있습니다. LINQ 문 안에 부분 클래스 속성을 사용합니다

Craig가 생각했듯이 "Works"를 포함하는 이유는 당신이 string.contains를 호출하기 때문입니다. Craig가 생각했듯이.

크레이그,

비디오를 보면서 한 시간이 넘는 시간이 걸렸다는 것을 깨달았으므로 더 많은 시간이 있으면 시청해야합니다. 그래도 알려주기 위해 .. 포함 LINQ에서 엔티티에 생성 된 SQL은 다음과 같습니다.

SELECT 
1 AS [C1], 
[Extent1].[PeopleID] AS [PeopleID], 
[Extent1].[Forenames] AS [Forenames], 
[Extent1].[Surname] AS [Surname]
FROM [dbo].[People] AS [Extent1]
WHERE (CHARINDEX(N'Dave', [Extent1].[Forenames] + N' ' + [Extent1].[Surname])) > 0

그것은 치료를하는 것 같습니다. 사용 charindex 합의 된 필드에 입력 된 텍스트가 포함되어있는 경우 위의 경우 "데이브".

감사합니다 Dave

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top