2012-10-29 3 views
1

Im пытается заполнить мои модели домена и дочерние сущности с выполнением 1 SQL Store Proceedure. Возможно, на это будет ответить here. Я очень уверен, что это невозможно, но я, хотя я бы бросил вопрос, чтобы найти возможную работу вокруг.Eager Load from Entity Framework SP

У меня довольно сложные модели доменов, и им нужен более эффективный способ загрузки моих данных, а не запрос клиента, а затем ленивая загрузка его детей. Я представил простой пример того, что я пытаюсь достичь ниже;

public class Customer{ 
    public int Id { get; set; } 
    public virtual Address Address { get; set; } 
} 

public class Address{ 
    public int Id { get; set; } 
} 

вар клиент = this.Database.SqlQuery < Customer> ("Exec SP_Name")

Я знаю, что в EF5 вы можете вернуть multiple data contexts, но им надежды я могу разрешить Muliple дочерних объектов.

Надеюсь, ive сделал смысл. Мне недостает много сна, так что извиняйтесь, если это не так. После спорта по часовой стрелке на 10 часов сложнее! :(

ответ

2

Хранимые процедуры в EF не требуют активной загрузки. Они могут загружать только один уровень сущностей. Вы можете использовать хранимую процедуру с несколькими наборами результатов, как указано в связанной статье, но это работает только с EDMX, и вы должны выполнить отображенную функцию импорт вместо SqlQuery Вы также можете просто использовать жадную загрузку с LINQ запросом вместо хранимой процедуры, чтобы избежать отложенной загрузки:.

var customers = context.Set<Customer>() 
         .Include(c => c.Address) 
         .FirstOrDefault(c => c.Name == someName); 
+0

благодаря Ладиславам, я предположил, как много, однако я надеялся, что, как EF5 поддерживает несколько! наборы результатов мы были на полпути, и, возможно, была найдена работа по решению этой проблемы? Мой запрос является сложным, поэтому на самом деле не достижимо с LINQ как SQL, сгенерированным для выполнения запроса wo uld будет слишком медленным, чтобы выполнить im sure. – Christo

Смежные вопросы