linq2db / linq2db.EntityFrameworkCore

Bring power of Linq To DB to Entity Framework Core projects
MIT License
462 stars 38 forks source link

Dynamic ef Model, `GetTable` will throw #261

Closed Cricle closed 1 week ago

Cricle commented 1 year ago

image

Code like

var modelBuilder = new ModelBuilder();
modelBuilder.Entity(dynamicType, x =>
{
//xxx
});
var builder = new DbContextOptionsBuilder(Options)
    .UseModel(modelBuilder.FinalizeModel());
var opt = builder.Options;
var conn=opt.CreateLinqToDbConnection();
context.GetTable<T>().AsQueryable();//Will throw

Exception message is

System.InvalidOperationException:“The model must be finalized and its runtime dependencies must be initialized before 'GetModelDependencies' can be used. Ensure that either 'OnModelCreating' has completed or, if using a stand-alone 'ModelBuilder', that 'IModelRuntimeInitializer.Initialize(model.FinalizeModel())' was called.”

Reference

<PackageReference Include="linq2db.EntityFrameworkCore" Version="6.10.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.10" />
sdanyliv commented 1 year ago

Can you post something compliable? Tested it in the right way and everything works:

var modelBuilder = new ModelBuilder();
modelBuilder.Entity(typeof(JustOptionsTable), x =>
{
});

var builder = new DbContextOptionsBuilder()
    .UseSqlServer("Server=.;Database=NorthwindEFCore;Integrated Security=SSPI")
    .UseModel(modelBuilder.FinalizeModel());

var opt = builder.Options;
var conn = opt.CreateLinqToDbConnection();
var result = conn.GetTable<JustOptionsTable>().ToArray();
MaceWindu commented 1 week ago

Not reproducible with provided code