EfCore Включить Связанный объект в Add

Я хочу сделать это, но entry.Entity.User имеет значение NULL.

var entry = this.myContext.Verifications.Add(new DbVerification()
        {
            UserId = model.UserId,
            Created = DateTimeOffset.UtcNow,
            Method = model.VerificationType
        });
entry.Entity.User.FirstName = "peanut";

Я могу явно загрузить пользователя с помощью

this.myContext.Users.First(x => x.Id == model.UserId)

но могу ли я включить объект entry.Entity.User так или иначе, не делая этого?

Так же, как я могу это сделать

this.myContext.Verifications.Include(x => x.User).Where(doesntmatter);

чтобы включить пользовательский объект в объект, есть ли способ включить его аналогичным образом, используя context.Verifications.Add, как показано выше.

c#,.net,entity-framework,

1

Ответов: 1


2 принят

Одна вещь, которую вы можете сделать, это использовать « Явная загрузка» :

var entry = this.myContext.Verifications.Add(new DbVerification()
        {
            UserId = model.UserId,
            Created = DateTimeOffset.UtcNow,
            Method = model.VerificationType
        });
context.Entry(entry.Entity).Reference(p => p.User).Load();// Add this line
entry.Entity.User.FirstName = "peanut";

Но в конце, если у вас нет экземпляра пользовательского объекта в памяти, вам понадобится сделать поездку в оба конца, чтобы получить пользователя и внести изменения, поэтому нет большой разницы по сравнению с этим:

var entry = this.myContext.Verifications.Add(new DbVerification()
            {
                UserId = model.UserId,
                Created = DateTimeOffset.UtcNow,
                Method = model.VerificationType
            });
var user=this.myContext.Users.First(x => x.Id == model.UserId);
user.FirstName = "peanut";
myContext.SaveChanges();
C # ,. сеть, сущность-рамки,
Похожие вопросы