powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ Не вытягивает ссылочные сущности.
61 сообщений из 61, показаны все 3 страниц
LINQ Не вытягивает ссылочные сущности.
    #39667741
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так... Обнаружил свое не понимание в работе с EF сегодня.
Есть, например, сущности Employees -> Depatrments. И запрос
Код: c#
1.
var emp = await db.Employee.Where(p => p.Id == Id).SingleOrDefaultAsync(); 


пытаюсь добраться до имени отдела.
Код: c#
1.
String name = emp.AssignedDepartment.DepartmentName;


облом AssignedDepartment NULL
приходится делать инклюд
Код: c#
1.
var emp = await db.Employee.Where(p => p.Id == Id).Include(p => p.AssignedDepartment).SingleOrDefaultAsync(); 


Через Find добраться вообще не получается, все ссылочные сущности NULL.
Код: c#
1.
var emp = await db.Employee.FindAsync(Id);


Я грешным делом думал, что оно тянется автоматически. Ан нет.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667754
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот в этом примере никаких инклюдов писать не надо, все вытягиваются автоматически
Код: c#
1.
2.
3.
totalPosition = db.AssessmentFormDetails
.Where(p => (p.AssignedAssessmentFormId == Id && p.AssignedCompetencyCategoryDetail.AssignedCompetencyCategory.AssignedCompetencyId == 1))
.Average(o => o.AssignedRatingScale.Rate);


Это потому что их упомянули в Where or Average???
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667762
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

virtual
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667773
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttRelic Hunter,

virtualВсе мемберы virtual. А вот к AssessmentForm без инклюда не удается. Что не так?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
    public class AssessmentFormDetail
    {
        public int Id { get; set; }
        [Index("AK_AssessmentFormDetail", 1, IsUnique = true)]
        [ForeignKey("AssignedAssessmentFormId")]
        public virtual AssessmentForm AssignedAssessmentForm { get; set; }
        [Required]
        public virtual int AssignedAssessmentFormId { get; set; }
        [Index("AK_AssessmentFormDetail", 2, IsUnique = true)]
        [ForeignKey("AssignedCompetencyCategoryDetailId")]
        public virtual CompetencyCategoryDetail AssignedCompetencyCategoryDetail { get; set; }
        [Required]
        public virtual int AssignedCompetencyCategoryDetailId { get; set; }
        //[Index("AK_AssessmentFormDetail", 3, IsUnique = true)]
        [ForeignKey("AssignedRatingScaleId")]
        public virtual RatingScale AssignedRatingScale { get; set; }
        public virtual int? AssignedRatingScaleId { get; set; }
        public DateTime CreationDate { get; set; }
        [MaxLength(200)]
        public string CreatedBy { get; set; }
        public AssessmentFormDetail()
        {
            CreationDate = DateTime.Now;
            CreatedBy = System.Threading.Thread.CurrentPrincipal.Identity.Name;
        }
    }

...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667781
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

Зачем тут кругом асинхронность если результат нужен сразу?
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667784
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Petro123Relic Hunter,

Зачем тут кругом асинхронность если результат нужен сразу?Присоединяюсь с вопросом )))
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667787
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Relic Hunter,

Зачем тут кругом асинхронность если результат нужен сразу?

Кажись ты не понимаешь что такое асинхронность.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667789
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

Пока сложно сказать, может маппинг, может трекинг отключён, может ещё что. Какой EF?
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667795
Идеальный П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttRelic Hunter,

Пока сложно сказать, может маппинг, может трекинг отключён, может ещё что. Какой EF?
Код: c#
1.
 <package id="EntityFramework" version="6.1.1" targetFramework="net451" />


Как-то не совсем хорошо получается, нарываться на эти NULL в рантайме. За что боролись? Думалось EF это - полностью контролируемый дизайн-тайм. Да и не всегда вспомнишь про эти иклюды, а код компилируется на ура ))
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667797
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ппц. Если ссылочные сущности уже в кеше ЕФ (1), то они вытаскиваются потом уже и без инклюда, и find их вытягивает, а если нет (2), то получаем NULL.

(1)работает
Код: c#
1.
2.
3.
4.
5.
            var formDetails = await db.AssessmentFormDetails.Where(p => p.Id == Id).Include(p => p.AssignedRatingScale).Include(p => p.AssignedCompetencyCategoryDetail).SingleOrDefaultAsync();

            var formDetails2 = db.AssessmentFormDetails.Where(p => p.Id == Id).SingleOrDefault();

            var card =  db.AssessmentFormDetails.Find(Id);


(2)не работает, вылетает по null, если обрашаться к ссылочным сущностям

Код: c#
1.
2.
3.
4.
5.
            ///var formDetails = await db.AssessmentFormDetails.Where(p => p.Id == Id).Include(p => p.AssignedRatingScale).Include(p => p.AssignedCompetencyCategoryDetail).SingleOrDefaultAsync();

            var formDetails2 = db.AssessmentFormDetails.Where(p => p.Id == Id).SingleOrDefault();

            var card =  db.AssessmentFormDetails.Find(Id);


картонный домик рассыпается на глазах.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667816
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123Relic Hunter,

Зачем тут кругом асинхронность если результат нужен сразу?

Кажись ты не понимаешь что такое асинхронность.
Может я че и не понял....проблемы автора).
Ленивая подгрузка работает таким образом:
Код: c#
1.
Контекст.table1.table2.table3

.
И таким:
Код: c#
1.
2.
3.
foreach table1 context.table1{
    table1.table2 // пойшел доп запрос в другую таблу
}
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667819
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если автор просто про ссылки в классе по композиции ООП....без указания отношений один ко многим и т.д.
То imho подгрузки автоматом быть и не должно.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667845
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

Проверь на всякий случай, чему равна
Код: c#
1.
db.Configuration.LazyLoadingEnabled

должна быть true , чтобы код работал как ты ожидаешь
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667852
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идеальный П.hVosttRelic Hunter,

Пока сложно сказать, может маппинг, может трекинг отключён, может ещё что. Какой EF?
Код: c#
1.
 <package id="EntityFramework" version="6.1.1" targetFramework="net451" />



Как-то не совсем хорошо получается, нарываться на эти NULL в рантайме. За что боролись? Думалось EF это - полностью контролируемый дизайн-тайм. Да и не всегда вспомнишь про эти иклюды, а код компилируется на ура ))

Покажи отношения в сущностям.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667855
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregдолжна быть true по умолчанию вкл. Но конечно пусть проверит.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667862
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123refregдолжна быть true по умолчанию вкл. Но конечно пусть проверит.Когда же ты заткнешься? Выпей чё-нить от поноса...
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667868
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

касторку
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667882
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,
Не пиши банальности.
Параметр по умолчанию включен.
Разумеется ты разозлился).
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667883
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

Аргентина - Франция пока 1:1

проверь на всякий случай, чему равно:
Код: c#
1.
db.Configuration.LazyLoadingEnabled


должно быть true , чтобы код работал так как ты ожидаешь
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667909
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123refreg,
Не пиши банальности.
Параметр по умолчанию включен.
Разумеется ты разозлился).Банальности и глупости на этом форуме пишет только один человек...
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667914
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterкартонный домик рассыпается на глазах.

Может, карточный? :)

Find работает из кеша первого уровня, да. Null, если отключена ленивая загрузка.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667920
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregБанальности и глупости на этом форуме пишет только один человек...
Или по теме пиши, или полку дома прибей джуниор.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667934
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123refregБанальности и глупости на этом форуме пишет только один человек...
Или по теме пиши, или полку дома прибей джуниор.Будешь модератором, будешь указывать что писать... Следи за собой...
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667951
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,
Ну дак я ставлю на то что чел просто связи не там и не те расставил.
А ты с параметром ошибся, да еще и нервный.
Это факты.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667953
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

где же это факты? пока что только догадки
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667968
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123А ты с параметром ошибсяВо-первых, я не утверждал - что это причина, я так и написал "Проверь на всякий случай".

Во-вторых:
Petro123refregдолжна быть true по умолчанию вкл. Но конечно пусть проверит.Что? Значение по-умолчанию изменять нельзя?
Это значение не мог изменить другой разработчик для своих нужд, и забыть вернуть? (если один инстанс)
Это значение нельзя задать в конструкторе?

От тебя одно словоблудие...
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667972
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ну дак я ставлю на то что чел просто связи не там и не те расставил.Это что спорт?
Учись мыслить логически (а потом писать), явная загрузка работает.

И,Petro123Это факты
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39667996
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин. Зайдёшь на форум в надежде что тут про IT разговор, а тут опять одно и то же.
refregВо-первых, я не утверждал - что это причина, я так и написал "Проверь на всякий случай".
а потом добавил))
21533017
Выводы делайте сами.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39668012
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123блин. Зайдёшь на форум в надежде что тут про IT разговор, а тут опять одно и то же.Аналогично...
А чё ты так разнервничался? Выпей таблеточку...
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670238
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тыкс, продолжаем изумляться...
Сделал тестовый пример.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
вариант А

var aaa = await db.AssessmentFormDetails.FindAsync(Id);
{StaffCompetecyInventory.Models.AssessmentFormDetail}

вариант Б
var bbb = await db.AssessmentFormDetails.FindAsync(3690);
{System.Data.Entity.DynamicProxies.AssessmentFormDetail_0E353859AB9C37A6938C598B32653FA41CF490D703B2E95A829BBC004DD83605}


В варианте А, как и предполагалось назначился тип StaffCompetecyInventory.Models.AssessmentFormDetail из модели и подчиненные сущности не вытянулись, NullReference. А в варианте Б произошло что-то странное. Переменная bbb привелась к какому-то странному типу System.Data.Entity.DynamicProxies.AssessmentFormDetail_0E353859AB9C37A6938C598B32653FA41CF490D703B2E95A829BBC004DD83605 и все подчиненые сущности были уже проинициализированы. Разница между А и Б, А - передали в метод FindAsync переменную Id, в Б - передали число, равное переменной Id, 3690.

Кното-то сможет ппрояснить, что там происходит???
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670242
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterКното-то сможет ппрояснить, что там происходит???дык уже писали и даже ставки делали)))на неверную Модель и маппинг.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670247
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему в "А" вытягивается экземпляр модели, а в "Б" dynamic proxy? Лениваая загрузка включена, вся конфигурация по умолчанию.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670252
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterПочему в "А" вытягивается экземпляр модели, а в "Б" dynamic proxy? Лениваая загрузка включена, вся конфигурация по умолчанию.были 4,5 догадок в топике. Но ты ответы не читаешь.
Ну если забыть всё что выше писали, то тебе тяжело тест из двух классов сделать?
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670256
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Но ты ответы не читаешь.

+1
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670304
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterПочему в "А" вытягивается экземпляр модели, а в "Б" dynamic proxy? Лениваая загрузка включена, вся конфигурация по умолчанию.

Делай тестовый проект, выкладывай.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670345
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там все связано с обновлением сущности. Перед тем как вызвать Find() происходит обновление

Код: c#
1.
2.
db.Entry(assessmentFormDetail).State = EntityState.Modified;
await db.SaveChangesAsync();



и Find() вытаскивает сущность assessmentFormDetail из кеша без запроса к базе, в таком-же виде, как мы ее туда поместили: AssignedAssessmentForm, AssignedCompetencyCategoryDetail, AssignedRatingScale - не инициализированы. Просто обновили Id вчешних ключей. Ежели не обновлять сущность перед запросом Find(), то к базе пролезет запрос и Find() вернет прокси со всеми инициализироваными сущностями, т.е. ленивая загрузка сработает. Вот чем собака порылась. Так-ли оно должно быть а не знаю.

ЗЫ
Вчера прочитал бэст практис один и чувак там высказал не плохую мысль: не использовать никакие ленивые загрузки, ни changetracking-и и доставать все вручную в LINK запросе, перечислив ссылочные сущности и их поля явно, чтобы не тащить лишнего и не нарываться внезапно на NullReferense. И я больше склонен с ним согласиться, чем нет. А так со схемой модели все в порядке, просто есть нюансы ;)


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
    public class AssessmentFormDetail
    {
        public int Id { get; set; }
        [Index("AK_AssessmentFormDetail", 1, IsUnique = true)]
        [ForeignKey("AssignedAssessmentFormId")]
        public virtual AssessmentForm AssignedAssessmentForm { get; set; }
        [Required]
        public virtual int AssignedAssessmentFormId { get; set; }
        [Index("AK_AssessmentFormDetail", 2, IsUnique = true)]
        [ForeignKey("AssignedCompetencyCategoryDetailId")]
        public virtual CompetencyCategoryDetail AssignedCompetencyCategoryDetail { get; set; }
        [Required]
        public virtual int AssignedCompetencyCategoryDetailId { get; set; }
        //[Index("AK_AssessmentFormDetail", 3, IsUnique = true)]
        [ForeignKey("AssignedRatingScaleId")]
        public virtual RatingScale AssignedRatingScale { get; set; }
        public virtual int? AssignedRatingScaleId { get; set; }
        public DateTime CreationDate { get; set; }
        [MaxLength(200)]
        public string CreatedBy { get; set; }
        public AssessmentFormDetail()
        {
            CreationDate = DateTime.Now;
            CreatedBy = System.Threading.Thread.CurrentPrincipal.Identity.Name;
        }
    }

...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670368
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterиз кеша без запроса к базе,

await db.SaveChangesAsync(); - а это типа query free?


Relic Hunterи не нарываться внезапно на NullReferense.
Трешак конечно. И этот мусор (я про код) идёт в продакшн? Пиши лучше чистые select-ы через ODBC, тогда риск

Relic Hunterнарываться внезапно на NullReferense сведешь к нулю.

P.S. Дай мне надежду, скажи, что этот код больше никто не видит.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670371
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterВчера прочитал бэст практис один и чувак там высказал не плохую мысль: не использовать никакие ленивые загрузки, ни changetracking-и и доставать все вручную в LINK запросе, перечислив ссылочные сущности и их поля явно, чтобы не тащить лишнего и не нарываться внезапно на NullReferense. И я больше склонен с ним согласиться, чем нет. А так со схемой модели все в порядке, просто есть нюансы ;)

Да етить его налево... Сколька ж можно-та? Да сколько!?

Entity в его чистом виде, с лейзи, без лейзи -- вообще наплювать, прокси-не-прокси. Только для одного.
Для одного единственного случая.
Для изменения.
Всё. Мать ево за ногу.

Остальные запросы на чтение, вывод, экспорт, почитать, посмотерть -- исключительно через проекции.

Но нет же. Думают, а ничё такой микроскоп. Тяжёленький. Можно и гвозди позабивать.

Млээээ...... Ээээаааа....
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670372
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

Если вкратце. Хочешь отредактировать -- Find. Модификация. SaveChanges.

Хочешь какую-то информацию просто прочитать и вывести -- проекции.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670373
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterпросто есть нюансы ;)

Нет никаких ньюансов, нужно понимание что и для чего сделано.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670375
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterи Find() вытаскивает сущность assessmentFormDetail из кеша без запроса к базе, в таком-же виде, как мы ее туда поместили

Да. Поэтому

1. кеши 1го уровня должны быть короткоживующие, т.е. контекст должен жить ровно одну бизнес-операцию
2. читать данные из Find -- НЕЛЬЗЯ, только для изменения
3. лейзи для чтения -- НЕЛЬЗЯ, только для изменения
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670378
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Што такое "проекции" по-вашему? Это? https://metanit.com/sharp/entityframework/4.2.php

Ну дак там ситуация, такая-же, либо в Select явно прописать все, что нужно вытянуть, либо Includes(). Без это связанные сущности не проинициализируются.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670381
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

нет.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
// это проекция
var list1 = db.Peoples
   .Where(...)
   .Select(p => new {
      p.Id, 
      p.FirstName,
      p.LastName
   })
   .ToList();

// это тоже проекция
var list2 = db.Peoples
   .Where(...)
   .ProjectTo<PeopleDto>()
   .ToList();

// это проекция с фильтрацией по проекции
var list3 = db.Peoples
   .ProjectTo<PeopleDto>()
   .Where(...)
   .ToList();

// а так делать можно только когда элементы из списка требуется ИЗМЕНИТЬ
var entityList = db.Peoples.Where(...).ToList();



никаких Include! никаких "связных сущностей", которые проинициализируются, для чтения данных из базы только проекции. даже если подмывает, ну вот здесь-то можно и сущность вытянуть, чо такого..
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670384
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Ок,

на твоем примере мне нужно по Id вытянуть пипла (одного, никаких то лист), а также имя города в котором он живет (св. сущность города один-ко-многим).

Каг?
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670385
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

В общем идея понятна. В первом посте ты употребил слово "virtual", намекая на ленивую загрузку через навигационные свойства (не так-ли?), а в результате, когда как оказалось оно так нифига не работает, ты написал про проекции и ручную выборку, как и что делать. Наверное так и нужно делать, что я и писал постом раньше. Но это никак не отвечает на вопрос ТС.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670405
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Можно без проекции.
Ленивое свойство инициализируется в момент геттера к нему. Т.е. в момент запроса.
Он пример то сделал или нет?
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670406
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтар!
Пример с одним полем Без Мусора будет или плакать 4-ю страницу будем?
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670409
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttкеши 1го уровня должны быть короткоживующие, т.е. контекст должен жить ровно одну бизнес-операцию
+1
ТопикСтартерdb.Entry(assessmentFormDetail).State = EntityState.Modified;
Самому статус менять не Нужно.
Иначе нафига тогда EF?
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670410
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterhVostt,

Ок,

на твоем примере мне нужно по Id вытянуть пипла (одного, никаких то лист), а также имя города в котором он живет (св. сущность города один-ко-многим).

Каг?
Код: c#
1.
2.
3.
Customer customer21 = con.Customers.FirstOrDefault(c => c.id == 21); 
var город = customer21.Город;
var имя = город.Имя.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670452
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterкогда как оказалось оно так нифига не работает,

Пиши в MS - они не в курсе.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670528
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterhVostt,

Ок,

на твоем примере мне нужно по Id вытянуть пипла (одного, никаких то лист), а также имя города в котором он живет (св. сущность города один-ко-многим).

Каг?

Код: c#
1.
2.
3.
4.
5.
6.
7.
var data = db.Peoples
   .Select(p => new {
      p.Id,
      LocationName = p.Location.Name
   })
   .Where(p => p.Id == peopleId)
   .SinlgeOrDefault();
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670531
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterhVostt,

В общем идея понятна. В первом посте ты употребил слово "virtual", намекая на ленивую загрузку через навигационные свойства (не так-ли?), а в результате, когда как оказалось оно так нифига не работает, ты написал про проекции и ручную выборку, как и что делать. Наверное так и нужно делать, что я и писал постом раньше. Но это никак не отвечает на вопрос ТС.

virtual это когда ты выдёргиваешь из базы и хочешь его изменить, а не читать.
если ты перед эти положил в контекст, значит ты либо сам его правильно инициализируешь, все поля, либо кладёшь, закрываешь контекст, открываешь и читаешь уже прокси.

но это жесть.

используй проекции. всегда и везде, при любой возможности.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670909
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttRelic HunterhVostt,

Ок,

на твоем примере мне нужно по Id вытянуть пипла (одного, никаких то лист), а также имя города в котором он живет (св. сущность города один-ко-многим).

Каг?

Код: c#
1.
2.
3.
4.
5.
6.
7.
var data = db.Peoples
   .Select(p => new {
      p.Id,
      LocationName = p.Location.Name
   })
   .Where(p => p.Id == peopleId)
   .SinlgeOrDefault();

А вот х. оно будет работать если p.Location nullable, уйдет оно в AV как портфель под лед. Проекции...
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670912
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterбудетты ТС или нет?
Если да, то бери и проверяй.
Как будто тут Оракл ставить надо.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39670914
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterесли p.Location nullable

Если nullable - то тогда труба. Надо чтобы не nullable. Но как? Задачка...
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39671131
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterА вот х. оно будет работать если p.Location nullable, уйдет оно в AV как портфель под лед. Проекции...

Если не знаете как это работает, то не обязательно выдумывать. Проекции отлично работают в этом случае.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39671132
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомRelic Hunterесли p.Location nullable

Если nullable - то тогда труба. Надо чтобы не nullable. Но как? Задачка...

Нет.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39671137
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАгнец за бортомпропущено...


Если nullable - то тогда труба. Надо чтобы не nullable. Но как? Задачка...

Нет.

Ты.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39671165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАгнец за бортомпропущено...


Если nullable - то тогда труба. Надо чтобы не nullable. Но как? Задачка...
Нет.
У него сарказм был). Шутка)
Аффтару давно пора решить эту задачку первой четверти второго класса. И работать не в монологе, а в диалоге.
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39671317
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVosttпропущено...

Нет.
У него сарказм был). Шутка)
Аффтару давно пора решить эту задачку первой четверти второго класса. И работать не в монологе, а в диалоге.

;)
...
Рейтинг: 0 / 0
LINQ Не вытягивает ссылочные сущности.
    #39671318
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123пропущено...

У него сарказм был). Шутка)
Аффтару давно пора решить эту задачку первой четверти второго класса. И работать не в монологе, а в диалоге.

;)
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ Не вытягивает ссылочные сущности.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]