EAVFW / EAVFW.Templates

0 stars 0 forks source link

InitializeDevDB inverseProperty error #16

Closed emlunde closed 2 years ago

emlunde commented 2 years ago

Jeg får følgende fejl, når jeg kører DBDevSetup som test i VS:

Har oprettet en manifests folder, og har for god ordens skyld manuelt tilføjet et genereret manifest med version. Alle generede manifests har "CreatedBy" attribut på Document, men den dukker ikke op på det genererede DTO. Bruger samme SourceGenerator version som DLF (Version="1.0.143").

 InitializeDevDB
   Source: DBDevSetup.cs line 41
   Duration: 2,3 sec

  Message: 
Test method MyOrg004.HelperScripts.DBDevSetup.InitializeDevDB threw exception: 
System.InvalidOperationException: The [InverseProperty] attribute on property 'Identity.CreatedByDocuments' is not valid. The property 'CreatedBy' is not a valid navigation on the related type 'Document'. Ensure that the property exists and is a valid reference or collection navigation.

  Stack Trace: 
InversePropertyAttributeConvention.ConfigureInverseNavigation(IConventionEntityTypeBuilder entityTypeBuilder, MemberInfo navigationMemberInfo, IConventionEntityTypeBuilder targetEntityTypeBuilder, InversePropertyAttribute attribute)
InversePropertyAttributeConvention.Process(IConventionEntityTypeBuilder entityTypeBuilder, MemberInfo navigationMemberInfo, Type targetClrType, InversePropertyAttribute attribute)
InversePropertyAttributeConvention.ProcessEntityTypeAdded(IConventionEntityTypeBuilder entityTypeBuilder, MemberInfo navigationMemberInfo, Type targetClrType, InversePropertyAttribute attribute, IConventionContext`1 context)
NavigationAttributeConventionBase`1.ProcessEntityTypeAdded(IConventionEntityTypeBuilder entityTypeBuilder, IConventionContext`1 context)
ImmediateConventionScope.OnEntityTypeAdded(IConventionEntityTypeBuilder entityTypeBuilder)
OnEntityTypeAddedNode.Run(ConventionDispatcher dispatcher)
DelayedConventionScope.Run(ConventionDispatcher dispatcher)
ConventionBatch.Run()
ConventionBatch.Dispose()
InternalModelBuilder.Entity(TypeIdentity& type, ConfigurationSource configurationSource, Nullable`1 shouldBeOwned)
InternalModelBuilder.Entity(Type type, ConfigurationSource configurationSource, Nullable`1 shouldBeOwned)
ModelBuilder.Entity(Type type)
DynamicContext.OnModelCreating(ModelBuilder modelBuilder)
ModelCustomizer.Customize(ModelBuilder modelBuilder, DbContext context)
ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies)
ModelSource.GetModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies)
DbContextServices.CreateModel()
DbContextServices.get_Model()
<>c.<TryAddCoreServices>b__7_3(IServiceProvider p)
CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
ServiceProviderEngineScope.GetService(Type serviceType)
ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
DbContext.get_DbContextDependencies()
DbContext.get_InternalServiceProvider()
DbContext.get_ChangeTracker()
DynamicContext.ctor(DbContextOptions`1 options, IOptions`1 modelOptions, IMigrationManager migrationManager, ILogger`1 logger)
DBDevSetup.InitializeDevDB() line 61
ThreadOperations.ExecuteWithAbortSafety(Action action)

  Standard Output: 
Test
Test
Servers: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
EnvironmentVariables: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Documents: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Identities: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Permissions: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoles: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRolePermissions: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoleAssignments: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroups: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroupMembers: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
RecordShares: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Signins: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Failed to configure: Identities: MyOrg004.Models.Identity
pksorensen commented 2 years ago

Tak, jeg prøver at genskabe

emlunde commented 2 years ago

Har arbejdet på en solution baseret på ejl/optimizing-setupForRun branch.

emlunde commented 2 years ago

En anden ting med scriptet er følgende fejl, der sker, når det køres med følgende cmd:

PS C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004> dotnet test --filter "FullyQualifiedName=MyOrg004.HelperScripts.DBDevSetup.InitializeDevDB" ../../scripts/MyOrg004.HelperScripts/MyOrg004.HelperScripts.csproj
  Determining projects to restore...
  All projects are up-to-date for restore.
  MyOrg004.Common -> C:\dev\EAV004\src\MyOrg004.Common\bin\Debug\netcoreapp3.1\MyOrg004.Common.dll
  MyOrg004.Models -> C:\dev\EAV004\src\MyOrg004.Models\bin\Debug\netcoreapp3.1\MyOrg004.Models.dll
  MyOrg004.BusinessLogic -> C:\dev\EAV004\src\MyOrg004.BusinessLogic\bin\Debug\netcoreapp3.1\MyOrg004.BusinessLogic.dll
C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\Startup.g.cs(69,45): error CS0246: The type or namespace name 'Identity' could not be found (are you missing a using directive or an assembly reference?) [C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\MyOrg004.MyEAVTestApp004.csproj]
C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\Startup.g.cs(70,42): error CS0246: The type or namespace name 'Identity' could not be found (are you missing a using directive or an assembly reference?) [C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\MyOrg004.MyEAVTestApp004.csproj]
thygesteffensen commented 2 years ago

En anden ting med scriptet er følgende fejl, der sker, når det køres med følgende cmd:

PS C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004> dotnet test --filter "FullyQualifiedName=MyOrg004.HelperScripts.DBDevSetup.InitializeDevDB" ../../scripts/MyOrg004.HelperScripts/MyOrg004.HelperScripts.csproj
  Determining projects to restore...
  All projects are up-to-date for restore.
  MyOrg004.Common -> C:\dev\EAV004\src\MyOrg004.Common\bin\Debug\netcoreapp3.1\MyOrg004.Common.dll
  MyOrg004.Models -> C:\dev\EAV004\src\MyOrg004.Models\bin\Debug\netcoreapp3.1\MyOrg004.Models.dll
  MyOrg004.BusinessLogic -> C:\dev\EAV004\src\MyOrg004.BusinessLogic\bin\Debug\netcoreapp3.1\MyOrg004.BusinessLogic.dll
C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\Startup.g.cs(69,45): error CS0246: The type or namespace name 'Identity' could not be found (are you missing a using directive or an assembly reference?) [C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\MyOrg004.MyEAVTestApp004.csproj]
C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\Startup.g.cs(70,42): error CS0246: The type or namespace name 'Identity' could not be found (are you missing a using directive or an assembly reference?) [C:\dev\EAV004\apps\MyOrg004.MyEAVTestApp004\MyOrg004.MyEAVTestApp004.csproj]

Det minder om det jeg så, jf. min sidste status besked. Hvis du skal køre det med dotnet fra terminalen, så skal det også bygges med den, af en eller anden grund. Prøv

  1. dotnet build t:Clean
  2. dotnet build
  3. <din kommando>

Jeg syntes det virkede for mig i torsdags, men er ikke sikker ;)

thygesteffensen commented 2 years ago

Nope, det gjorde ikke den store forskel. Men at tilføje EmitCompilerGeneratedFiles til true i projekt filen gjorde at VS kunne bygge :)

emlunde commented 2 years ago

Det kan køre fra DLF project, hvis jeg udskifter manifest med et manifest, der er identisk med det i testEAV projektet, og sletter/udkommenterer alt DLF-specifikt image

Har testet med at:


Får den der inverseProperty error men mistænker, at det i virkeligheden er at den ikke kan læse Identity rigtigt, når den kører (selvom VS genkender det).


Får følgende slutning af loggen, når testen fejler i testEAV projektet:

...
Servers: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
EnvironmentVariables: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Documents: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Identities: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Permissions: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoles: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRolePermissions: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoleAssignments: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroups: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroupMembers: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
RecordShares: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Signins: MyOrg004.Models, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Failed to configure: Identities: MyOrg004.Models.Identity

I den DLF efterligningsløsning får står det dobbelt, og har ikke slutningsfejlbeskeden om Identity med:

...
Servers: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
EnvironmentVariables: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Documents: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Identities: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Permissions: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoles: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRolePermissions: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoleAssignments: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroups: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroupMembers: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
RecordShares: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Signins: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Servers: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
EnvironmentVariables: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Documents: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Identities: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Permissions: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoles: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRolePermissions: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityRoleAssignments: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroups: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
SecurityGroupMembers: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
RecordShares: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Signins: DLF.ArbejdstidsRegistrering.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
emlunde commented 2 years ago

.HelperScript.csproj for EAV004 test projekt:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <IsPackable>false</IsPackable>
        <UserSecretsId>ba510b84-e1b7-4cd3-8225-979f7a9e76ff</UserSecretsId>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.0" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
        <PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
        <PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
        <PackageReference Include="coverlet.collector" Version="1.2.0" />
        <PackageReference Include="semver" Version="2.0.6" />
    </ItemGroup>

    <ItemGroup>
        <ProjectReference Include="..\..\apps\MyOrg004.MyEAVTestApp002\MyOrg004.MyEAVTestApp004.csproj" />
    </ItemGroup>

</Project>

.Script for DLF:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
      <UserSecretsId>10b41f36-520d-4c28-a9a9-5e6d256e1c15</UserSecretsId>
    <IsPackable>false</IsPackable>
      <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
      <Nullable>disable</Nullable>
  </PropertyGroup>

  <ItemGroup>
      <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
    <PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
    <PackageReference Include="coverlet.collector" Version="1.2.0" />
    <PackageReference Include="semver" Version="2.0.6" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
    <PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" />
    <PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\apps\DLF.ArbejdstidsRegistrering.App\DLF.ArbejdstidsRegistrering.App.csproj" />
  </ItemGroup>

  <ItemGroup>
    <None Update="appsettingsSampleData.local.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>