Код: Выделить всё
var sendingRules = context.Set().ToList();
System.NotSupportedException: «Коллекция доступна только для чтения».
Искомая сущность выглядит следующим образом
Код: Выделить всё
public sealed class SendingRules : Entity
{
private readonly List _lbacFilters = new();
private SendingRules() { }
public SendingRules(LBACLevels? lbacLevel = null) : base(Guid.NewGuid())
{
LBACLevel = lbacLevel;
}
public LBACLevels? LBACLevel { get; private set; }
public IReadOnlyCollection LBACFilters => _lbacFilters.AsReadOnly();
public void AddLBACFilter(SendingRuleLBACFilter lbacFilter)
{
EnsureArg.IsNotNull(lbacFilter, nameof(lbacFilter));
_lbacFilters.Add(lbacFilter);
}
}
Код: Выделить всё
public sealed class SendingRuleLBACFilter : SendingRuleFilter
{
public SendingRuleLBACFilter(string template) : base(template)
{
}
}
Код: Выделить всё
builder
.OwnsMany(
(sendingRule) => sendingRule.LBACFilters,
(builder) =>
{
builder.ToTable("SendingRuleLBACFilters");
builder.WithOwner()
.HasForeignKey("SendingRulesId");
});
System.InvalidOperationException: Навигация «SendingRules._lbacFilters» не найдена. Пожалуйста, добавьте навигацию к типу объекта перед его настройкой
Кто-нибудь знает, в чем проблема?
Код: Выделить всё
at System.ThrowHelper.ThrowNotSupportedException(ExceptionResource resource)
at System.Collections.ObjectModel.ReadOnlyCollection`1.System.Collections.Generic.ICollection.Add(T value)
at Microsoft.EntityFrameworkCore.Metadata.Internal.ClrICollectionAccessor`3.Add(Object entity, Object value, Boolean forMaterialization)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.AddToCollection(INavigationBase navigationBase, InternalEntityEntry value, Boolean forMaterialization)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalMixedEntityEntry.AddToCollection(INavigationBase navigationBase, InternalEntityEntry value, Boolean forMaterialization)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.AddToCollection(InternalEntityEntry entry, INavigationBase navigation, InternalEntityEntry value, Boolean fromQuery)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.SetReferenceOrAddToCollection(InternalEntityEntry entry, INavigationBase navigation, InternalEntityEntry value, Boolean fromQuery)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.ToDependentFixup(InternalEntityEntry dependentEntry, InternalEntityEntry principalEntry, IForeignKey foreignKey, Boolean fromQuery)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.InitialFixup(InternalEntityEntry entry, Boolean fromQuery)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.TrackedFromQuery(InternalEntityEntry entry)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntryNotifier.TrackedFromQuery(InternalEntityEntry entry)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.MarkUnchangedFromQuery()
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.StartTrackingFromQuery(IEntityType baseEntityType, Object entity, ValueBuffer& valueBuffer)
at Microsoft.EntityFrameworkCore.Query.QueryContext.StartTracking(IEntityType entityType, Object entity, ValueBuffer valueBuffer)
at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.ShaperProcessingExpressionVisitor.
g__ProcessCurrentElementRow|60_0[TIncludingEntity,TIncludedEntity](c__DisplayClass60_0`2& )
at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.ShaperProcessingExpressionVisitor.PopulateIncludeCollection[TIncludingEntity,TIncludedEntity](Int32 collectionId, QueryContext queryContext, DbDataReader dbDataReader, SingleQueryResultCoordinator resultCoordinator, Func`3 parentIdentifier, Func`3 outerIdentifier, Func`3 selfIdentifier, IReadOnlyList`1 parentIdentifierValueComparers, IReadOnlyList`1 outerIdentifierValueComparers, IReadOnlyList`1 selfIdentifierValueComparers, Func`5 innerShaper, INavigationBase inverseNavigation, Action`2 fixup, Boolean trackingQuery)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.Enumerator.MoveNext()
at Microsoft.EntityFrameworkCore.DbContext.RemoveRange(IEnumerable`1 entities)
at Castle.Proxies.Invocations.DbContext_RemoveRange_1.InvokeMethodOnTarget()
at Castle.DynamicProxy.AbstractInvocation.Proceed()
Я попробовал изменить свою конфигурацию на эту
Код: Выделить всё
builder
.OwnsMany(
"_lbacFilters",
builder =>
{
builder.ToTable("SendingRuleLBACFilters");
builder.WithOwner()
.HasForeignKey("SendingRulesId");
}).Navigation(x => x.LBACFilters);
Невозможно определить связь, представленную навигацией «SendingRules.LBACFilters» типа «IReadOnlyCollection». Либо вручную настройте связь, либо игнорируйте это свойство с помощью атрибута «[NotMapped]» или с помощью «EntityTypeBuilder.Ignore» в «OnModelCreating».
Что происходит?
Подробнее здесь: https://stackoverflow.com/questions/698 ... e-entities
Мобильная версия