0


0

ADO.NET Entity Framework:QUERYのn-n関係

4つのテーブルがあります。

  • PK * ClientID *を持つクライアント。

  • PK * DestinationID *を持つ宛先

  • PK * LanguageID *を持つ言語。

  • PK * DestinationID *を持つDestinationDetail。

  • PK * ClientID および DestinationID *を持つRL-Client-Destination。

クライアントは0個またはn個の宛先を持つことができます。 宛先にはn個のDestinationDetailsがあり、それぞれのDestinationDetailには言語があります。

Ok. 特定のクライアントと特定の言語のすべてのDestinationDetailsを取得する必要があります。

私はこれを書きました(それがうまくいくかどうかはわかりません)が、もっと良い方法があるかもしれません:

    ObjectQuery clientQuery =
       guiaContext.Client.Where("it.email = @email",
           new ObjectParameter("email", "[email protected]"));

    Client client = clientQuery.First();

    client.Destination.Load();
    EntityCollection destinations = client.Destination;

    ObjectQuery languageQuery =
       guiaContext.Language.Where("it.ds_language = @languageDS",
         new ObjectParameter("languageDS", "en-US"));
    Language language = languageQuery.First();

    foreach (Destination dest in destinations)
    {
        dest.DestinationDetail.Load();
        EntityCollection details = dest.DestinationDetail;
        foreach (DestinationDetail detail in details)
        {
           detail.Language = language;
           Console.WriteLine("Destination: " + detail.ds_destinationName);
        }
     }

私はADO.NET Entity Frameworkを学んでいます。

ありがとうございます。

1 回答


0


これが答えです。

var db = new PracticeEntities(); var Destinations = db.DestinationDetails。 ここで(dd => dd.Language.Lang == "en-US"

ありがとうございました!