eou*_*3hf 3 c# entity-framework npgsql entity-framework-core
根据文档enum
,我添加了一个实体框架并将其注册到 NPGSQL 中:
static DataContext()
{
NpgsqlConnection.GlobalTypeMapper.MapEnum<MyEnum>();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ForNpgsqlHasEnum<MyEnum>();
...
}
Run Code Online (Sandbox Code Playgroud)
运行迁移并启动 Web 应用程序后,抛出以下异常:
CLR 枚举类型 MyEnum 必须在使用前向 Npgsql 注册,请参考文档
如果我再次重新启动应用程序,它工作得很好 - 这只会在MyEnum
应用了添加的迁移后立即发生。
问题是在迁移发生后 NPGSQL 的类型映射与数据库不同步,并且在执行迁移后需要重新加载类型。
这可以通过调用ReloadTypes()
后调用来纠正Migrate()
:
public void Migrate()
{
Database.Migrate();
using (var connection = (NpgsqlConnection)Database.GetDbConnection())
{
connection.Open();
connection.ReloadTypes();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
906 次 |
最近记录: |