2011-01-06 13 views
0

Ich möchte Daten aus der Tabelle "Province_Notifiers" abrufen und auch alle entsprechenden Elemente aus der Tabelle "Province_Notifier_Datas" abrufen. Die Tabelle "Province_Notifier" hat eine GUID, um sie zu identifizieren (PK), die Tabelle "Province_Notifier_Datas" hat eine Spalte namens BelongsToProvinceID, die ein Fremdschlüssel für die "Province_Notifier" -Tabellen GUID ist.Wählen Sie Zeilen aus Tabelle1 und alle untergeordneten Objekte aus Tabelle2 in ein Objekt

ich so etwas wie dies versucht:

var records = from data in ctx.Province_Notifiers 
       where DateTime.Now >= data.SendTime && data.Sent == false 
       join data2 in ctx.Province_Notifier_Datas on data.Province_ID equals data2.BelongsToProvince_ID 
       select new Province_Notifier 
       { 
        Email = data.Email, 
        Province_ID = data.Province_ID, 
        ProvinceName = data.ProvinceName, 
        Sent = data.Sent, 
        UserName = data.UserName, 
        User_ID = data.User_ID, 
        Province_Notifier_Datas = (new List<Province_Notifier_Data>().AddRange(data2)) 
       }; 

Diese Zeile nicht funktioniert und ich versuche topull die Daten, um herauszufinden, wie aus table2 in diese Province_Notifier_Datas Variable.

Province_Notifier_Datas = (new List<Province_Notifier_Data>().AddRange(data2)) 

ich eine Platte leicht hinzufügen kann die zweite Tabellenzeile in die Province_Notifier_Datas durch Zugabe, aber ich kann es nicht zurück holen.

Province_Notifier dbNotifier = new Province_Notifier(); 
// set some values for dbNotifier 
dbNotifier.Province_Notifier_Datas.Add(
      new Province_Notifier_Data 
      { 
       BelongsToProvince_ID = userInput.Value.ProvinceId, 
       EventText = GenerateNotificationDetail(notifierDetail) 
      }); 

Dies funktioniert und fügt die Daten korrekt in beide Tabellen ein.

Edit:

Diese Fehlermeldungen ausgelöst wird:

Cannot convert from 'Province_Notifier_Data' to 'System.Collections.Generic.IEnumerable'

Wenn ich in Visual Studio suchen, die Variable "Province_Notifier_Datas" ist vom Typ System.Data.Linq.EntitySet

The best overloaded method match for 'System.Collections.Generic.List.AddRange(System.Collections.Generic.IEnumerable)' has some invalid arguments

Bearbeiten:

var records = from data in ctx.Province_Notifiers 
       where DateTime.Now >= data.SendTime && data.Sent == false   
       join data2 in ctx.Province_Notifier_Datas on data.Province_ID equals data2.BelongsToProvince_ID 
       into data2list 
       select new Province_Notifier 
       { 
        Email = data.Email, 
        Province_ID = data.Province_ID, 
        ProvinceName = data.ProvinceName, 
        Sent = data.Sent, 
        UserName = data.UserName, 
        User_ID = data.User_ID, 
        Province_Notifier_Datas = new EntitySet<Province_Notifier_Data>().AddRange(data2List) 
       }; 

Fehler 3 Der Name 'data2List' existiert nicht im aktuellen Kontext.

Antwort

0

data2 repräsentiert ein einzelnes Objekt vom Typ Province_Notifier_Data, keine Aufzählung (daher die Ausnahme). Versuchen Sie, eine into Klausel in Ihre Abfrage einfügen:

var records = from data in ctx.Province_Notifiers 
       where DateTime.Now >= data.SendTime && data.Sent == false 
       join data2 in ctx.Province_Notifier_Datas 
        on data.Province_ID equals data2.BelongsToProvince_ID 
       into data2List 
       select new Province_Notifier 
       { 
        Email = data.Email, 
        Province_ID = data.Province_ID, 
        ProvinceName = data.ProvinceName, 
        Sent = data.Sent, 
        UserName = data.UserName, 
        User_ID = data.User_ID, 
        Province_Notifier_Datas = data2List 
       }; 

Wenn Province_Notifier_Datas vom Typ EntitySet<T> Sie könnten versuchen, die folgenden: Definieren Sie eine Erweiterungsmethode (Idee von here):

public static class Extensions 
{ 
    public static EntitySet<T> ToEntitySet<T>(this IEnumerable<T> source) 
     where T : class 
    { 
     var entitySet = new EntitySet<T>(); 
     entitySet.AddRange(source); 
     return entitySet; 
    } 
} 

Und dann ersetzen die letzte Zeile von:

Province_Notifier_Datas = data2List.ToEntitySet() 
+0

Wenn ich versuche, dass ich die folgende Fehlermeldung erhalten: Fehler Der Typ 'System.Collections.Generic.IEnumerable ' kann nicht implizit in 'System.Data.Linq.EntitySet ' konvertiert werden. Es gibt eine explizite Konvertierung (fehlt eine Besetzung?) – Patrick

+0

@Patrick: Ist 'Province_Notifier_Datas' vom Typ 'EntitySet '? Dann versuche meinen bearbeiteten Code. – Slauma

+0

Ich habe das hinzugefügt, aber jetzt kann es die data2List nicht finden ?? Se mein Beitrag oben, unten – Patrick

Verwandte Themen