ADO.NET实体框架:QUERY n-n关系

时间:2009-03-20 05:48:01

标签: c# entity-framework ado.net

我有四张桌子:

  • PK ClientID 的客户。
  • 目标PK DestinationID
  • PK语言语言ID
  • 目标详情,PK DestinationID
  • RL-Client-Destination,PK ClientID DestinationID

客户可能有零或n个目的地。目的地有n个DestinationDetails,每个DestinationDetail都有一种语言。

确定。我需要检索给定客户端和给定语言的所有DestinationDetails。

我写了这个(如果它有效,我不知道),但也许有更好的方法:


    ObjectQuery clientQuery =
       guiaContext.Client.Where("it.email = @email",
           new ObjectParameter("email", "xxx@example.com"));

    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实体框架。

谢谢!

1 个答案:

答案 0 :(得分:0)

这就是答案:


var db = new PracticeEntities();
var destinations = db.DestinationDetails.
          Where(dd => dd.Language.Lang == "en-US" &&
          dd.Destination.Client.Any(c => c.Email == "abc@yahoo.com"));

谢谢!