diff --git a/.github/dependabot.yml b/.github/dependabot.yml index bfb277bb..6f6d592f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,5 +1,11 @@ version: 2 updates: +- package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: daily + time: "02:00" + open-pull-requests-limit: 10 - package-ecosystem: nuget directory: "/service/" schedule: diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 5fc52acd..a43998eb 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -1,15 +1,19 @@ name: Build Project env: - BUILD_PATH: '${{github.workspace}}/publish' - BUILD_VERSION: '1.8.${{github.run_number}}' - BUILD_INFORMATION: '1.8.${{github.run_number}}+Branch.${{github.ref_name}}.Sha.${{github.sha}}' + DOTNET_NOLOGO: true + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true + DOTNET_ENVIRONMENT: github + ASPNETCORE_ENVIRONMENT: github + BUILD_PATH: '${{github.workspace}}/artifacts' on: push: branches: - master - develop + tags: + - "v*" pull_request: branches: - master @@ -21,23 +25,23 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Setup .NET 7.0 + - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: 7.0.x + dotnet-version: 8.0.x - name: Setup MSBuild - uses: microsoft/setup-msbuild@v1.1 + uses: microsoft/setup-msbuild@v1.3 - name: Restore Dependencies run: dotnet restore ./service/InstructorIQ.sln - name: Build Solution - run: 'dotnet build ./service/InstructorIQ.sln --no-restore --configuration Release -p:Version="${{env.BUILD_VERSION}}" -p:InformationalVersion="${{env.BUILD_INFORMATION}}"' + run: 'dotnet build ./service/InstructorIQ.sln --no-restore --configuration Release' - name: Publish Web Application if: success() @@ -61,39 +65,53 @@ jobs: name: Database path: '${{env.BUILD_PATH}}/Database' - deploy-website: + + deploy-staging: runs-on: ubuntu-latest needs: build-project if: success() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') + environment: + name: Staging + url: https://staging.instructoriq.com/ + steps: + - name: Download Database Artifact + uses: actions/download-artifact@v3 + with: + name: Database + - name: Download Web Application Artifact uses: actions/download-artifact@v3 with: name: WebApplication - - name: Deploy Web Application to Azure Staging - if: github.ref == 'refs/heads/develop' - uses: azure/webapps-deploy@v2 + - name: Deploy SQL Server Database to Azure + if: success() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') + uses: azure/sql-action@v2.2 + with: + connection-string: ${{secrets.AZURE_SQL_CONNECTION_STAGING}} + path: './InstructorIQ.dacpac' + action: 'publish' + + - name: Deploy Web Application to Azure + if: success() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') + uses: azure/webapps-deploy@v3 with: app-name: 'web-ls-app-eus-iq-stg-01' slot-name: 'Production' publish-profile: ${{secrets.PUBLISH_PROFILE_STAGING}} package: ./ - - name: Deploy Web Application to Azure Production - if: github.ref == 'refs/heads/master' - uses: azure/webapps-deploy@v2 - with: - app-name: 'web-ls-app-eus-iq-prd-01' - slot-name: 'Production' - publish-profile: ${{secrets.PUBLISH_PROFILE_PRODUCTION}} - package: ./ - deploy-database: - runs-on: windows-latest + deploy-production: + runs-on: ubuntu-latest needs: build-project - if: success() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') + if: success() && github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/v') + + environment: + name: Production + url: https://instructoriq.com/ steps: - name: Download Database Artifact @@ -101,18 +119,24 @@ jobs: with: name: Database - - name: Deploy SQL Server Database to Azure Staging - if: github.ref == 'refs/heads/develop' - uses: azure/sql-action@v2.1 + - name: Download Web Application Artifact + uses: actions/download-artifact@v3 with: - connection-string: ${{secrets.AZURE_SQL_CONNECTION_STAGING}} - path: './InstructorIQ.dacpac' - action: 'publish' + name: WebApplication - - name: Deploy SQL Server Database to Azure Production - if: github.ref == 'refs/heads/master' - uses: azure/sql-action@v2.1 + - name: Deploy SQL Server Database to Azure + if: success() && github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/v') + uses: azure/sql-action@v2.2 with: connection-string: ${{secrets.AZURE_SQL_CONNECTION_PRODUCTION}} path: './InstructorIQ.dacpac' action: 'publish' + + - name: Deploy Web Application to Azure + if: success() && github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/v') + uses: azure/webapps-deploy@v3 + with: + app-name: 'web-ls-app-eus-iq-prd-01' + slot-name: 'Production' + publish-profile: ${{secrets.PUBLISH_PROFILE_PRODUCTION}} + package: ./ diff --git a/service/Directory.Build.props b/service/Directory.Build.props index 150637b6..9528b953 100644 --- a/service/Directory.Build.props +++ b/service/Directory.Build.props @@ -16,9 +16,15 @@ 1591 + + v + + - - + + + + diff --git a/service/src/InstructorIQ.Core/Data/DataServiceModule.cs b/service/src/InstructorIQ.Core/Data/DataServiceModule.cs index e2d4f6c6..b0dd139d 100644 --- a/service/src/InstructorIQ.Core/Data/DataServiceModule.cs +++ b/service/src/InstructorIQ.Core/Data/DataServiceModule.cs @@ -14,12 +14,16 @@ public class DataServiceModule [RegisterServices] public void Register(IServiceCollection services) { - services.AddDbContext((provider, options) => - { - var configuration = provider.GetRequiredService(); - var connectionString = configuration.GetConnectionString("InstructorIQ"); - options.UseSqlServer(connectionString, providerOptions => providerOptions.EnableRetryOnFailure()); - }, ServiceLifetime.Transient); + services.AddDbContext( + optionsAction: (provider, options) => + { + var configuration = provider.GetRequiredService(); + var connectionString = configuration.GetConnectionString("InstructorIQ"); + options.UseSqlServer(connectionString, providerOptions => providerOptions.EnableRetryOnFailure()); + }, + contextLifetime: ServiceLifetime.Transient, + optionsLifetime: ServiceLifetime.Transient + ); services.TryAddSingleton(provider => { diff --git a/service/src/InstructorIQ.Core/Data/Entities/Attendance.cs b/service/src/InstructorIQ.Core/Data/Entities/Attendance.cs index dc0ae334..b938b005 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Attendance.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Attendance.cs @@ -121,7 +121,7 @@ public Attendance() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -130,7 +130,7 @@ public Attendance() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Session Session { get; set; } @@ -139,7 +139,7 @@ public Attendance() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/AuthenticationEvent.cs b/service/src/InstructorIQ.Core/Data/Entities/AuthenticationEvent.cs index 17b172f3..863d371a 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/AuthenticationEvent.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/AuthenticationEvent.cs @@ -154,7 +154,7 @@ public AuthenticationEvent() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion diff --git a/service/src/InstructorIQ.Core/Data/Entities/Discussion.cs b/service/src/InstructorIQ.Core/Data/Entities/Discussion.cs index 288cd368..bf04b21a 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Discussion.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Discussion.cs @@ -170,7 +170,7 @@ public Discussion() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } /// /// Gets or sets the property value representing column 'PeriodStart'. @@ -195,7 +195,7 @@ public Discussion() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } @@ -204,7 +204,7 @@ public Discussion() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Topic Topic { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/EmailDelivery.cs b/service/src/InstructorIQ.Core/Data/Entities/EmailDelivery.cs index 24134e6b..3b6ac1b8 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/EmailDelivery.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/EmailDelivery.cs @@ -170,7 +170,7 @@ public EmailDelivery() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -179,7 +179,7 @@ public EmailDelivery() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/EmailTemplate.cs b/service/src/InstructorIQ.Core/Data/Entities/EmailTemplate.cs index d3c6d61e..a57fae2d 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/EmailTemplate.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/EmailTemplate.cs @@ -140,7 +140,7 @@ public EmailTemplate() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -149,7 +149,7 @@ public EmailTemplate() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/Group.cs b/service/src/InstructorIQ.Core/Data/Entities/Group.cs index 1ac32432..9b54e5fc 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Group.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Group.cs @@ -107,7 +107,7 @@ public Group() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } /// /// Gets or sets the property value representing column 'PeriodStart'. @@ -132,7 +132,7 @@ public Group() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Sessions { get; set; } @@ -140,7 +140,7 @@ public Group() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/HistoryRecord.cs b/service/src/InstructorIQ.Core/Data/Entities/HistoryRecord.cs index a54664d4..70eb97a5 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/HistoryRecord.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/HistoryRecord.cs @@ -194,7 +194,7 @@ public HistoryRecord() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion diff --git a/service/src/InstructorIQ.Core/Data/Entities/ImportJob.cs b/service/src/InstructorIQ.Core/Data/Entities/ImportJob.cs index a797879f..35c8d755 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/ImportJob.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/ImportJob.cs @@ -96,7 +96,7 @@ public ImportJob() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -105,7 +105,7 @@ public ImportJob() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/InstructorRole.cs b/service/src/InstructorIQ.Core/Data/Entities/InstructorRole.cs index bac1c3a6..66a5d222 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/InstructorRole.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/InstructorRole.cs @@ -92,7 +92,7 @@ public InstructorRole() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -101,7 +101,7 @@ public InstructorRole() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection SessionInstructors { get; set; } @@ -109,7 +109,7 @@ public InstructorRole() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } @@ -118,7 +118,7 @@ public InstructorRole() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection TopicInstructors { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/LinkToken.cs b/service/src/InstructorIQ.Core/Data/Entities/LinkToken.cs index a8834467..971ca73a 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/LinkToken.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/LinkToken.cs @@ -89,7 +89,7 @@ public LinkToken() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/Location.cs b/service/src/InstructorIQ.Core/Data/Entities/Location.cs index 3d51c858..f23cc713 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Location.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Location.cs @@ -179,7 +179,7 @@ public Location() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } /// /// Gets or sets the property value representing column 'PeriodStart'. @@ -204,7 +204,7 @@ public Location() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Sessions { get; set; } @@ -212,7 +212,7 @@ public Location() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/Notification.cs b/service/src/InstructorIQ.Core/Data/Entities/Notification.cs index c7424235..96d6861a 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Notification.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Notification.cs @@ -106,7 +106,7 @@ public Notification() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -115,7 +115,7 @@ public Notification() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/Session.cs b/service/src/InstructorIQ.Core/Data/Entities/Session.cs index 167d5144..591d7e71 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Session.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Session.cs @@ -44,7 +44,7 @@ public Session() /// /// The property value representing column 'StartDate'. /// - public DateTime? StartDate { get; set; } + public DateOnly? StartDate { get; set; } /// /// Gets or sets the property value representing column 'StartTime'. @@ -52,7 +52,7 @@ public Session() /// /// The property value representing column 'StartTime'. /// - public TimeSpan? StartTime { get; set; } + public TimeOnly? StartTime { get; set; } /// /// Gets or sets the property value representing column 'EndDate'. @@ -60,7 +60,7 @@ public Session() /// /// The property value representing column 'EndDate'. /// - public DateTime? EndDate { get; set; } + public DateOnly? EndDate { get; set; } /// /// Gets or sets the property value representing column 'EndTime'. @@ -68,7 +68,7 @@ public Session() /// /// The property value representing column 'EndTime'. /// - public TimeSpan? EndTime { get; set; } + public TimeOnly? EndTime { get; set; } /// /// Gets or sets the property value representing column 'TenantId'. @@ -148,7 +148,7 @@ public Session() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } /// /// Gets or sets the property value representing column 'PeriodStart'. @@ -173,7 +173,7 @@ public Session() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Attendances { get; set; } @@ -181,7 +181,7 @@ public Session() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Group Group { get; set; } @@ -190,7 +190,7 @@ public Session() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Location Location { get; set; } @@ -199,7 +199,7 @@ public Session() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection SessionInstructors { get; set; } @@ -207,7 +207,7 @@ public Session() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } @@ -216,7 +216,7 @@ public Session() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Topic Topic { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/SessionInstructor.cs b/service/src/InstructorIQ.Core/Data/Entities/SessionInstructor.cs index 90dd8752..6b0d2514 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/SessionInstructor.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/SessionInstructor.cs @@ -90,7 +90,7 @@ public SessionInstructor() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } /// /// Gets or sets the property value representing column 'PeriodStart'. @@ -115,7 +115,7 @@ public SessionInstructor() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual InstructorRole InstructorRole { get; set; } @@ -124,7 +124,7 @@ public SessionInstructor() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Session Session { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/SignUp.cs b/service/src/InstructorIQ.Core/Data/Entities/SignUp.cs index b82f9ecf..28dab3a1 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/SignUp.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/SignUp.cs @@ -91,7 +91,7 @@ public SignUp() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -100,7 +100,7 @@ public SignUp() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection SignUpTopics { get; set; } @@ -108,7 +108,7 @@ public SignUp() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/SignUpTopic.cs b/service/src/InstructorIQ.Core/Data/Entities/SignUpTopic.cs index 7dcafe8c..bdbe8345 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/SignUpTopic.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/SignUpTopic.cs @@ -82,7 +82,7 @@ public SignUpTopic() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } #endregion @@ -91,7 +91,7 @@ public SignUpTopic() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual SignUp SignUp { get; set; } @@ -100,7 +100,7 @@ public SignUpTopic() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Topic Topic { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/Template.cs b/service/src/InstructorIQ.Core/Data/Entities/Template.cs index c437a1d7..55d52abf 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Template.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Template.cs @@ -106,7 +106,7 @@ public Template() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } /// /// Gets or sets the property value representing column 'PeriodStart'. @@ -131,7 +131,7 @@ public Template() /// Gets or sets the navigation property for entity . /// /// - /// The the navigation property for entity . + /// The navigation property for entity . /// /// public virtual Tenant Tenant { get; set; } diff --git a/service/src/InstructorIQ.Core/Data/Entities/Tenant.cs b/service/src/InstructorIQ.Core/Data/Entities/Tenant.cs index 55692496..f9897f16 100644 --- a/service/src/InstructorIQ.Core/Data/Entities/Tenant.cs +++ b/service/src/InstructorIQ.Core/Data/Entities/Tenant.cs @@ -145,7 +145,7 @@ public Tenant() /// /// The property value representing column 'RowVersion'. /// - public Byte[] RowVersion { get; set; } + public long RowVersion { get; set; } /// /// Gets or sets the property value representing column 'PeriodStart'. @@ -170,7 +170,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Attendances { get; set; } @@ -178,7 +178,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Discussions { get; set; } @@ -186,7 +186,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection EmailDeliveries { get; set; } @@ -194,7 +194,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection EmailTemplates { get; set; } @@ -202,7 +202,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Groups { get; set; } @@ -210,7 +210,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection ImportJobs { get; set; } @@ -218,7 +218,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection InstructorRoles { get; set; } @@ -226,7 +226,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection LinkTokens { get; set; } @@ -234,7 +234,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Locations { get; set; } @@ -242,7 +242,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Notifications { get; set; } @@ -250,7 +250,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection Sessions { get; set; } @@ -258,7 +258,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection SignUps { get; set; } @@ -266,7 +266,7 @@ public Tenant() /// Gets or sets the navigation collection for entity . /// /// - /// The the navigation collection for entity . + /// The navigation collection for entity . /// public virtual ICollection