I am using EF Core v7.0.18.
I have a .csproj
with 2 dBContext, GlobalDbContext
and ConfiguratinDbContext
.
GlobalDbContext
works when I add a and EF migration – cmd lines below ConfigurationDbContext
does not.
The error I get is:
Unable to create an object of type ‘ConfigurationDbContext’. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
How to fix this?
For GlobalDbContext
, this works and migration is created:
dotnet ef migrations add
--project Doma.DataLayer/Doma.DataLayer.csproj
--startup-project Doma.DataLayer.Tests/Doma.DataLayer.Tests.csproj
--context Doma.DataLayer.Global.Models.GlobalDbContext
--configuration Debug
--framework net7.0 Initial
--output-dir Global/Migrations
For ConfigurationDbContext
– this is failing:
dotnet ef migrations add --project Doma.DataLayer/Doma.DataLayer.csproj
--startup-project Doma.DataLayer.Tests/Doma.DataLayer.Tests.csproj
--context Doma.DataLayer.Configuration.Models.ConfigurationDbContext
--configuration Debug --framework net7.0 Initial
--output-dir Configuration/Migrations
Build started...
Build succeeded.
Unable to create an object of type ‘ConfigurationDbContext’. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
Process terminated with exit code 1
Succeeding DbContext
[GlobalDbContext
]:
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
#nullable disable
using System;
using System.Collections.Generic;
using Doma.DataLayer.Global.Models;
using Microsoft.EntityFrameworkCore;
namespace Doma.DataLayer.Global.Models;
public partial class GlobalDbContext : DbContext
{
public GlobalDbContext()
{
}
public GlobalDbContext(DbContextOptions<GlobalDbContext> options)
: base(options)
{
}
public virtual DbSet<AppConfiguration> AppConfigurations { get; set; }
public virtual DbSet<FormInstance> FormInstances { get; set; }
public virtual DbSet<FormValue> FormValues { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlite(
"Data Source=TempGlobalDatabas.db");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AppConfiguration>(entity =>
{
entity.ToTable("AppConfiguration");
entity.Property(e => e.AppConfigurationId).HasColumnType("varchar(36)");
entity.Property(e => e.AppName).HasColumnType("varchar");
entity.Property(e => e.BucketName).HasColumnType("varchar");
entity.Property(e => e.Comments).HasColumnType("varchar");
entity.Property(e => e.ConfigurationIconPath).HasColumnType("varchar");
entity.Property(e => e.CurrentlyInstalledVersion).HasColumnType("varchar");
entity.Property(e => e.CurrentlyInstalledVersionLabel).HasColumnType("varchar");
entity.Property(e => e.ETag).HasColumnType("varchar");
entity.Property(e => e.FileKey).HasColumnType("varchar");
entity.Property(e => e.FileName).HasColumnType("varchar");
entity.Property(e => e.LastModified).HasColumnType("bigint");
entity.Property(e => e.Title).HasColumnType("varchar");
entity.Property(e => e.Url).HasColumnType("varchar");
entity.Property(e => e.Version).HasColumnType("varchar");
});
modelBuilder.Entity<FormInstance>(entity =>
{
entity.ToTable("FormInstance");
entity.Property(e => e.FormInstanceId).HasColumnType("varchar(36)");
entity.Property(e => e.DateCreated).HasColumnType("bigint");
entity.Property(e => e.FormId).HasColumnType("varchar(36)");
entity.Property(e => e.FormInstanceName).HasColumnType("varchar");
});
modelBuilder.Entity<FormValue>(entity =>
{
entity.ToTable("FormValue");
entity.Property(e => e.FormValueId).HasColumnType("varchar(36)");
entity.Property(e => e.FormInstanceId).HasColumnType("varchar(36)");
entity.Property(e => e.QuestionId).HasColumnType("varchar");
entity.Property(e => e.Type).HasColumnType("varchar");
entity.Property(e => e.Value).HasColumnType("varchar");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
#nullable disable
Failing DbContext (ConfigurationDbContext
):
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
#nullable disable
using System;
using System.Collections.Generic;
using Doma.DataLayer.Global.Models;
using Microsoft.EntityFrameworkCore;
namespace Doma.DataLayer.Global.Models;
public partial class GlobalDbContext : DbContext
{
public GlobalDbContext()
{
}
public GlobalDbContext(DbContextOptions<GlobalDbContext> options)
: base(options)
{
}
public virtual DbSet<AppConfiguration> AppConfigurations { get; set; }
public virtual DbSet<FormInstance> FormInstances { get; set; }
public virtual DbSet<FormValue> FormValues { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlite(
"Data Source=TempGlobalDatabas.db");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AppConfiguration>(entity =>
{
entity.ToTable("AppConfiguration");
entity.Property(e => e.AppConfigurationId).HasColumnType("varchar(36)");
entity.Property(e => e.AppName).HasColumnType("varchar");
entity.Property(e => e.BucketName).HasColumnType("varchar");
entity.Property(e => e.Comments).HasColumnType("varchar");
entity.Property(e => e.ConfigurationIconPath).HasColumnType("varchar");
entity.Property(e => e.CurrentlyInstalledVersion).HasColumnType("varchar");
entity.Property(e => e.CurrentlyInstalledVersionLabel).HasColumnType("varchar");
entity.Property(e => e.ETag).HasColumnType("varchar");
entity.Property(e => e.FileKey).HasColumnType("varchar");
entity.Property(e => e.FileName).HasColumnType("varchar");
entity.Property(e => e.LastModified).HasColumnType("bigint");
entity.Property(e => e.Title).HasColumnType("varchar");
entity.Property(e => e.Url).HasColumnType("varchar");
entity.Property(e => e.Version).HasColumnType("varchar");
});
modelBuilder.Entity<FormInstance>(entity =>
{
entity.ToTable("FormInstance");
entity.Property(e => e.FormInstanceId).HasColumnType("varchar(36)");
entity.Property(e => e.DateCreated).HasColumnType("bigint");
entity.Property(e => e.FormId).HasColumnType("varchar(36)");
entity.Property(e => e.FormInstanceName).HasColumnType("varchar");
});
modelBuilder.Entity<FormValue>(entity =>
{
entity.ToTable("FormValue");
entity.Property(e => e.FormValueId).HasColumnType("varchar(36)");
entity.Property(e => e.FormInstanceId).HasColumnType("varchar(36)");
entity.Property(e => e.QuestionId).HasColumnType("varchar");
entity.Property(e => e.Type).HasColumnType("varchar");
entity.Property(e => e.Value).HasColumnType("varchar");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
#nullable disable