문제

부분 클래스를 사용하여 L2S 디자이너가 생성 한 협회 속성을 가리키는 속성을 만들 수 있습니까? 또한 새로운 속성을 쿼리로 사용할 수 있습니까?

이것을 어떻게 달성 할 수 있습니까?

도움이 되었습니까?

해결책

예, 할 수는 있지만 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의 이름이 변경됩니다.

편집하다: 부분 클래스에서 별도의 속성을 사용하는 단점은 쿼리를 생성 할 때 LINQ가 사용할 수 없다는 것입니다. 기본적으로 객체의 관련 속성을 사용하기 전에 항상 엔티티를 가져와야합니다. Renaming을 통해 LINQ는 쿼리 구성에 관련 속성을 사용할 수있어보다 효율적인 쿼리가 발생할 수 있습니다. 예를 들어, 관련 엔티티에 특정 속성 값이있는 엔티티를 얻으려면 속성 장식 엔티티를 사용하면 LINQ가 SQL을 생성하여 데이터베이스에서 일치하는 값 만 가져올 수 있습니다. 순진한 속성 구현 (단순히 기본 관계 속성을 참조하고 사실상 이름을 바꾸는 경우)을 사용하면 먼저 모든 엔티티를 얻은 다음 응용 프로그램에서 필터링을 수행해야합니다.

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