Имеет проблемы с получением EF Core 8 Lazy Lazy Roading после обновления в базу данных ⇐ C#

Место общения программистов C#
Anonymous
Имеет проблемы с получением EF Core 8 Lazy Lazy Roading после обновления в базу данных

Сообщение Anonymous »

Во -первых, позвольте мне начать с того, что я пытаюсь преобразовать большой проект ASP.Net Web API из .NET 4.8, EF Core 7 в .net 8 и EF Core 8. При этом я заметил, что большая часть кода приложения работает хорошо после переноса. Мы используем ленивые прокси нагрузки из -за того, что в большинстве ситуаций я должен получить доступ к большей части данных во многих местах и ​​станет кошмаром для кодирования всех включенных, чтобы получить данные. Я обнаружил, что, как только я выполняю обновление в базе данных, многие из связанных объектов не будут ленивы загружать соответствующие данные таблицы, когда я попытаюсь получить доступ к этим свойствам. Это особенно выяснилось, когда у вас может быть промежуточная таблица, чтобы удерживать отношения между 2 объектами. < /P>
Пример: < /p>

Код: Выделить всё

public partial class Name
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int NameID { get; set; }

public virtual ICollection NameLocations { get; set; }
}

public partial class Location
{
public int LocationID { get; set; }
public virtual ICollection NameLocations { get; set; }
}

public partial class NameLocation
{
public int NameLocationID { get; set; }
public int NameID { get; set; }
public int LocationID { get; set; }

public DateTime CreationDate { get; set; }
public DateTime LastModifiedDate { get; set; }

public virtual Location Location { get; set; }
public virtual Name Name { get; set; }
}
В программе я настраиваю dbcontext Например:

Код: Выделить всё

var connString = builder.Configuration.GetConnectionString("Context");
builder.Services.AddEntityFrameworkSqlServerNetTopologySuite();
builder.Services.AddEntityFrameworkSqlServer()
.AddEntityFrameworkProxies()
.AddDbContext((serviceProvider, options) =>
{
options.UseSqlServer(connString, sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure();
sqlOptions.UseNetTopologySuite();
}).UseInternalServiceProvider(serviceProvider);
options.UseLazyLoadingProxies();
});
и в dbcontext объекты определяются так:

Код: Выделить всё

modelBuilder.Entity(entity => {
{
entity.HasMany(e => e.NameLocations)
.WithOne(e => e.Location)
.HasForeignKey(e => e.LocationID)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_NameLocation_Location");
});

modelBuilder.Entity(entity => {
entity.HasMany(e => e.NameLocations)
.WithOne(e => e.Name)
.HasForeignKey(e => e.NameID)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_NameLocation_Name");
});
< /code>
Я добавляю новый объект местоположения имени на график, настраивающий правильный идентификатор идентификатора идентификатора идентификатора идентификатора идентификатора, а затем добавляя в контекст и вызовет изменения сохранения. Затем я прочитал данные обратно, используя findasync 
, используя вновь созданный идентификатор объекта. Все это работало нормально в EF Core 7, но я почесываю голову на то, как заставить его работать над EF Core 8. < /p>
Чего мне не хватает? У меня много кода, используя этот шаблон, так как он работал просто отлично, теперь я не могу заставить его работать, не написав кучу включения и используя Firstordefault () .

Подробнее здесь: https://stackoverflow.com/questions/796 ... o-database

Вернуться в «C#»