부분 클래스를 사용하여 L2S 디자이너가 생성 한 연관 속성을 가리키는 속성을 만들 수 있습니까? 또한 쿼리에서 새 속성을 사용할 수 있습니까?부분 클래스를 통해 LINQ 2 SQL 엔터티 속성 이름 바꾸기
어떻게하면됩니까?
부분 클래스를 사용하여 L2S 디자이너가 생성 한 연관 속성을 가리키는 속성을 만들 수 있습니까? 또한 쿼리에서 새 속성을 사용할 수 있습니까?부분 클래스를 통해 LINQ 2 SQL 엔터티 속성 이름 바꾸기
어떻게하면됩니까?
예 당신은 할 수 있지만, 원래 관계되는 linq2sql 생성 된 속성으로 즉
[Association(Name="Test_TestData", Storage="_TestDatas", ThisKey="SomeId", OtherKey="OtherId")]
public System.Data.Linq.EntitySet<TestData> MyTestDatas
{
get
{
return this.TestDatas;
}
}
TestDatas을 동일한 속성을 적용해야합니다.
업데이트 : 샘플 쿼리는 내가 실행 :
var context = new DataClasses1DataContext();
var tests =
from d in context.Tests
where d.MyTestDatas.Any(md=>md.MyId == 2)
select new
{
SomeId = d.SomeId,
SomeData = d.SomeData,
Tests = d.MyTestDatas
};
foreach (var test in tests)
{
var data = test.Tests.ToList();
}
연결 속성에 다른 이름을 지정하려면 연결에 대해 속성 페이지를 사용하고 부모 및/또는 자식 속성의 이름을 바꾸면됩니다. 그러면 클래스의 EntityRef/EntitySet 이름이 변경됩니다.
EDIT : 부분 클래스에서 별도의 속성을 사용하면 단점은 LINQ가 쿼리를 생성 할 때 LINQ를 사용할 수 없다는 것입니다. 기본적으로 항상 사용하기 전에 엔티티를 가져야합니다. 객체의 관련 속성 이름을 바꾸면 LINQ가 쿼리를 구성하는 데 관련된 속성을 사용하여보다 효율적인 쿼리를 생성 할 수 있습니다. 예를 들어 관련 엔티티가 특정 속성 값을 갖는 엔티티를 가져 오려면 속성 데코레이션 엔티티를 사용하면 LINQ가 SQL을 생성하여 데이터베이스에서 일치하는 값만 가져올 수 있습니다. 순수한 속성 구현 (단순히 기본 관계 속성을 참조하고 실제로 이름을 바꾸는)을 사용하면 먼저 모든 엔터티를 가져와 응용 프로그램에서 필터링을 수행해야합니다.
이 실용적인 접근 방식이 아니다. 변경 사항은 모델을 다시 생성 할 때 재정의됩니다. ( –
+1 실제 방법입니다 .Linq2sql에는 재생성 모델 버튼이 없으므로 디자이너의 변경 작업도 함께 진행됩니다. 귀하의 질문에 대한 정보 – eglasius
재생성으로, 테이블을 제거하고 다시 추가하는 것을 의미합니까? 예, 문제가 있습니다. 그러나 확실히 그렇게 자주 일어나지 않습니다. 아니면 외부 매핑 파일을 사용하고 있습니까? – tvanfosson
간접 속성이 표현 변환에 지원되지 않으므로 부모/자식 관계가 쿼리에 사용되는 경우 동일한 방식으로 작동하지 않습니다. – tvanfosson
방금 두 개의 샘플 쿼리를 실행했습니다. – eglasius
@Freddy -로드 된 속성을 참조 할 수 있지만 선택 항목이 작동하지 않을 것이라고 생각합니다. 속성 장식이 없으면 표현을 생성하는 데 필요한 힌트가 없다고 생각합니다. – tvanfosson