部分クラスを使用した LINQ 2 SQL エンティティ プロパティの名前変更

StackOverflow https://stackoverflow.com/questions/741898

  •  09-09-2019
  •  | 
  •  

質問

部分クラスを使用して、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クエリを生成するときに、それを使用することはできないということである - 基本的に、あなたは常にエンティティを取得することを余儀なくされますあなたは、オブジェクトに関連するプロパティを使用する前に。名前を変更することによって、あなたは、LINQは、より効率的なクエリにつながることができ、クエリの構築に関連するプロパティを使用することができます。たとえば、LINQはデータベースからちょうどそれらの一致する値を引き出すためにSQLを生成することができます属性飾られたエンティティを使用して、関連するエンティティは、特定のプロパティ値を持つエンティティを取得したい場合。素朴なプロパティの実装(単に名前を変更効果で、基本的な関係のプロパティを参照すること)で、あなたは、あなたのアプリケーションでフィルタリングを行い、最初にすべてのエンティティを取得することを余儀なくされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top