Поля структуры не обновляются, когда другой объект сообщает об обновлении структуры

Это должно работать:

IQueryable parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() });

EDIT

Если вы определяете:

public class ParentModel
{
    public Task Parent { get; set; }
    public int ChildCount { get; set; }
}

, вы можете использовать

IQueryable parentQuery = context.Parent.Select(p => new ParentModel { Parent = p, ChildCount = p.Childs.Count() });

EDIT

Вы также можете сделать:

var parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() }).ToList();
parentQuery.ForEach(p => p.Parent.ChildCount = p.ChildCount);
var result = return parentQuery.Select(p => p.Parent);

Короткие и у вас есть ваша собственность.

0
задан Floating Sunfish 19 March 2019 в 08:48
поделиться

2 ответа

Установите в поле «Владелец» значение «Собака, а не собака»

type Owner struct {
    dog *Dog
}

func newOwner(dog *Dog) Owner {
    var owner Owner
    owner.dog = dog

    return owner
}

при вызове из основного использования & собака

var dog Dog
    dog.name = "dog"

    owner := newOwner(&dog)

https: // play.golang.org/p/LpFqW09dOs4

0
ответ дан Vorsprung 19 March 2019 в 08:48
поделиться

Тип получателя метода должен быть указателем, если вы хотите, чтобы этот метод изменил состояние получателя.

То есть так же, как вы объявили метод growOld, метод tellDogToGrowOld также должен иметь приемник указателей:

func (owner *Owner) tellDogToGrowOld() {
    owner.dog.growOld()
}

В качестве альтернативы, вы можете сделать поле, хотите изменить указатель, например:

type Owner struct {
    dog *Dog
}

func newOwner(dog *Dog) Owner {
    var owner Owner
    owner.dog = dog

    return owner
}

func (owner Owner) tellDogToGrowOld() {
    owner.dog.growOld()
}
0
ответ дан mkopriva 19 March 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: