Базовый каркас Oracle DB в результате выдаст несколько идентификаторов (первичных ключей)

Когда я строю эту базу данных Oracle (сначала базу данных), и она генерирует мне все модели, контексты, отношения FK и т. Д. Но когда я начинаю запрос, это дает мне ошибку в контексте. (простые вещи, как выбрать * из (любой таблицы))

Появляется следующая ошибка.

System.InvalidOperationException

HResult=0x80131509

Сообщение = Свойства "Address.AddressId", "Address.AddressItemId" настроены на использование генератора значений "Identity" и сопоставлены с той же таблицей "[DBName].ADDRESS". Только один столбец в таблице может быть настроен как "Идентификация". Вызовите ValueGeneratedNever для свойств, которые не должны использовать Identity.

Источник =Oracle.EntityFrameworkCore

Трассировки стека:

в Oracle.EntityFrameworkCore.Internal.OracleModelValidator.ValidateSharedColumnsCompatibility(IReadOnlyList`1 mappedTypes, String tableName)

в Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.ValidateSharedTableCompatibility(модель IModel)

в Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.Validate(модель IModel)

в Oracle.EntityFrameworkCore.Internal.OracleModelValidator.Validate(модель IModel)

в Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ValidatingConvention.Apply(InternalModelBuilder modelBuilder)

в Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelBuilt(InternalModelBuilder modelBuilder)

в Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnModelBuilt(InternalModelBuilder modelBuilder)

в Microsoft.EntityFrameworkCore.Metadata.Internal.Model.Validate()

в Microsoft.EntityFrameworkCore.ModelBuilder.FinalizeModel()

в Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(контекст DbContext, соглашение IConventionSetBuilderSetBuilder, валидатор IModelValidator)

в Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.<>c__DisplayClass5_0.b__1()

в System.Lazy`1.ViaFactory(режим LazyThreadSafetyMode)

в System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, логическое значение useDefaultConstructor)

в System.Lazy`1.CreateValue()

в System.Lazy`1.get_Value()

в Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(контекст DbContext, соглашение IConventionSetBuilderSetBuilder, валидатор IModelValidator)

в Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()

в Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()

в Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.<>c.b__7_2(IServiceProvider p)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite, factoryCallSite, область ServiceProviderEngineScope)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, аргумент TArgument)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, аргумент TArgument)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, область ServiceProviderEngineScope)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, аргумент TArgument)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, аргумент TArgument)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(IServiceCallSite callSite, ServiceProviderEngineScope scope)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.b__0(ServiceProviderEngineScope scope)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)

at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)

at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)

at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()

at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()

at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()

в Microsoft.EntityFrameworkCore.DbContext.get_Model()

в Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityType()

в Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.CheckState()

в Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityQueryable()

в Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.System.Linq.IQueryable.get_Provider()

в System.Linq.Queryable.Count[TSource](источник IQueryable`1)

в OracleConsoleApp.Program.Main(String[] args) в C:\GitPlayGround\OracleConsoleApp\OracleConsoleApp\Program.cs: строка 47

Мне нужно использовать соединения FK в этой сложной структуре. У меня нет опыта ни с Oracle, ни с Oracle.EntityFrameworkCore (2.2.6, ядро ​​приложения 2.2)
Кто-нибудь может посоветовать мне, что делать, Не могу найти ключ, чтобы начать решать эту проблему.

1 ответ

После глубокого исследования мой коллега предложил решение. В Oracle генерируемые ценности работают иначе. Сначала в базе данных устанавливается аннотация к данным ValueGeneratedOnAdd();.

Это не рабочая модель и не контекст.

Таким образом, выборочное удаление этого ValueGeneratedOnAdd() приведет к рабочему результату и решит проблему.

Другие вопросы по тегам