2012-03-26 7 views
1

Ich kann nur SPs verwenden, um meine Entitäten aus der Datenbank zu laden. Ich kann erfolgreich Kunden laden, indem Import-Funktion:EF4: Laden von Navigationseigenschaften mit SP

Customer cust = context.GetCustomerById(customerId); 

Dann brauche ich cust.Orders Sammlung mit einem anderen SP zu laden:

IEnumerable<Order> cust_orders = context.GetOrdersByCustomerId(customerId); 

ich Liste der entsprechenden Aufträge, die Eigenschaft Kunden haben richtig eingestellt die bereits geladene Customer-Instanz. Das Problem tritt auf, wenn ich versuche, etwas wie zu tun:

foreach(Order ord in cust.Orders) 
{ 
    Console.WriteLine(ord.Number); // "SELECT permission required ..." exception is thrown here 
} 

Gibt es eine Möglichkeit zum Laden von Bestellungen Eigenschaft ohne Auslösung Wählen?

+0

Welche Art von Unternehmen Sie verwenden? 'EntityObject' oder POCO? ObjectContext API oder DbCotnext API? –

+0

EntityObject und ObjectContext Database-First-Ansatz. – user1291948

Antwort

0

Sie haben Lazy Loading und Last Orders durch entsprechende SP Anruf, wie diese deaktivieren:

DBContext.DataBase.SqlQuery<Order>("exec spGetOrders {0}", invoiceID).ToList(); 
+0

Wie lade ich Aufträge durch einen geeigneten SP-Aufruf, so dass ich foreach wie in Beispiel tun kann. Ich kann Bestellungen jetzt mit der Importfunktion laden, sie werden jedoch nicht in der cust.Orders-Sammlung angezeigt. – user1291948

+0

Jeder? Es ist unmöglich, dass unsere Firma die einzige ist, die den Datenzugriff durch SPs einschränkt und wenn EF eine Beziehung in einer Richtung reparieren kann, warum wäre es nicht möglich, in einer anderen zu tun, was die Sammlung mit gelesenen untergeordneten Entitäten bevölkern würde. Es muss möglich sein, da das DataExtensions-Framework von MS die Methode Bind bereitstellt, die scheinbar das tut, wonach ich suche. – user1291948

Verwandte Themen