Базовые леса Oracle DB дадут несколько идентификаторов (первичных ключей) в результате - PullRequest
0 голосов
/ 26 октября 2019

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

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

System.InvalidOperationException

HResult = 0x80131509

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

Source = Oracle.EntityFrameworkCore

StackTrace:

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

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

в модели Microsoft.EntityRealidalfatealMateFrame*

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

в Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ValidatingConvention.Apply (InternalModelBuilder) модель 1024 на уровне Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelBuilt (InternalModelBuilder modelBuilder)

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

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

в Microsoft.EntityFrameworkBileMilderMuderMuderMederMuderMeaderMileE

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

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

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

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

в System.Lazy`1.uealal

в System.Lazy`1.get_Value ()

в Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel (контекст DbContext, соглашение IConventionSetBuilderSetBuilder, IModelValidator validator * 10 * 10 * 10 * * 10 * 10 * в 10) *.EntityFrameworkCore.Internal.DbContextServices.CreateModel ()

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

в Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkSerrov_service_er2_service.ervices.ervices.ervices.ervices.ervices.ervices)1052 *

в Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver. )

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

в Microsoft.Extensions.DependencyCiteSiteSiteSiteSiteSitorSitor.Site.SiteSiteSitorSitor.SitSec. Аргумент TArgument)

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

вMicrosoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite (IServiceCallSite callSite, TArgument аргумент) * * * тысяча шестьдесят четыре 1065 * на Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped (ScopedCallSite scopedCallSite, ServiceProviderEngineScope охват)

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

в Microsoft.Extensions.DependencyInjection.ServiceLookup.

в Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine. <> c__DisplayClass1_0.b__0 (ServiceProviderEngineScope сфера)

* * на тысячу семьдесят-три Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService (тип ServiceType, ServiceProviderEngineScope serviceProviderEngineScope)

в Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope. [T] (поставщик IServiceProvider)

в Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies ()

в Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider ()

.EntityDbContext.get_DbContextDependencies ()

в Microsoft.EntityFrameworkCore.DbContext.get_Model ()

в Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityType 1091 (10) (10) (10) (91)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 Ответ

1 голос
/ 29 октября 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...