Одно или несколько свойств ключа или внешнего ключа являются теневыми свойствами, и объект не отслеживается.C#

Место общения программистов C#
Anonymous
Одно или несколько свойств ключа или внешнего ключа являются теневыми свойствами, и объект не отслеживается.

Сообщение Anonymous »

У меня есть следующий класс сущности:

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

internal class ServicePackage {

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Required]
[ForeignKey("ServiceId")]
[DeleteBehavior(DeleteBehavior.ClientNoAction)]
public virtual Service Service { get; set; }

public decimal Cost { get; set; }
}
Очень редко при попытке прикрепить (

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

dbContext.ServicePackages.Attach
) экземпляр объекта, который уже был добавлен в базу данных, я получаю следующее исключение System.InvalidOperationException:

The навигация «ServicePackage.Service» не может быть загружена, поскольку одно
или несколько свойств ключа или внешнего ключа являются теневыми свойствами и
объект не отслеживается. Отношения, использующие теневые значения, могут
загружаться только для отслеживаемых сущностей.
Stack Trace:
Microsoft.EntityFrameworkCore.Internal.EntityFinder'1.GetLoadValues(INavigation,
InternalEntityEntry)
← Microsoft.EntityFrameworkCore.Internal.EntityFinder'1.Load(INavigation,
InternalEntityEntry, LoadOptions)
← Microsoft.EntityFrameworkCore.ChangeTracking.ReferenceEntry.Load(LoadOptions)
← Microsoft.EntityFrameworkCore.Infrastructure.Internal.LazyLoader.Load(Object,
String)
← Castle.DynamicProxy.AbstractInvoke.Proceed()
← Castle.Proxies.ServicePackageProxy.get_Service( )

В чем может быть проблема и почему ошибка возникает периодически?

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

DbContext.OnConfiguring
переопределение метода:

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

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
optionsBuilder.UseSqlServer(SqlConnectionString);
optionsBuilder.UseLazyLoadingProxies();
base.OnConfiguring(optionsBuilder);
}
Версия .NET: 8.0; Версия Microsoft.EntityFrameworkCore.SqlServer: 8.0.8

Подробнее здесь: https://stackoverflow.com/questions/791 ... -and-the-e

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