我很难使用针对Oracle数据库的Entity Framework迁移,因为模式名称包含在迁移代码中,而对于Oracle,模式名称也是用户名.我的目标是实现与模式无关的Code First Migrations(能够为测试和生产环境提供一组迁移).
我已经尝试过这种方法(使用Entity Framework 6.1.3):
1)我在Web.config中有模式名称:
<add key="SchemaName" value="IPR_TEST" />
Run Code Online (Sandbox Code Playgroud)
2)我的DbContext将模式名称作为构造函数参数:
public EdistributionDbContext(string schemaName)
: base("EdistributionConnection")
{
_schemaName = schemaName;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(_schemaName);
}
Run Code Online (Sandbox Code Playgroud)
3)我必须为Entity Framework Migrations实现IDbContextFactory才能创建没有无参数构造函数的DbContext:
public class MigrationsContextFactory : IDbContextFactory<EdistributionDbContext>
{
public EdistributionDbContext Create()
{
return new EdistributionDbContext(GetSchemaName());
}
}
Run Code Online (Sandbox Code Playgroud)
4)我还将迁移历史表配置为正确的模式:
public class EdistributionDbConfiguration : DbConfiguration
{
public EdistributionDbConfiguration()
{
SetDefaultHistoryContext((connection, defaultSchema)
=> new HistoryContext(connection, GetSchemaName()));
}
}
Run Code Online (Sandbox Code Playgroud)
5)我修改了为迁移生成的代码,以替换硬编码的模式名称.例如.我替换CreateTable("IPR_TEST.Users")了CreateTable($"{_schema}.Users").(_schema字段根据Web.config中的值设置).
6)我使用MigrateDatabaseToLatestVersion<EdistributionDbContext, MigrationsConfiguration>()数据库初始化程序.
完成所有这些设置后,当我切换到不同的模式时(例如,通过web.config转换),我仍然会遇到问题 - …
是否可以在ASP.NET Core MVC中的视图中使用值元组作为模型类型?我的意思是这样的:
控制器:
public IActionResult Index()
{
...
(int ImportsCount, int ExportsCount) importsExports = (imports.Count, exports.Count);
return View(importsExports);
}
Run Code Online (Sandbox Code Playgroud)
视图:
@model (int ImportsCount, int ExportsCount)
Run Code Online (Sandbox Code Playgroud)
但是,使用此设置时,呈现页面时会引发异常.我正在使用安装了System.ValueTuple NuGet包的.NET 4.6.2.
我一直在使用 Application Insights (AI) 监控我的 ASP.NET 应用程序。最近,我还在我的 Web 服务器(带 IIS 的 Windows Server 2012 R2)上安装了 AI Status Monitor,以获取有关我的应用程序的更详细的统计信息。正如文档所述,AI Status Monitor 报告依赖性诊断,即。调用数据库、REST API 等。因此,我认为我可以对通过应用程序中的实体框架执行的数据库调用进行诊断。
但是,该应用程序的 AI 中没有出现数据库调用诊断。然而,AI 状态监视器之所以有效,是因为我开始收到有关除数据库之外的其他依赖项的诊断信息(即,阻止防火墙上的通信端口在这里不太可能成为问题)。
有人成功设置 AI Status Monitor 以使用实体框架报告数据库诊断吗?我是否缺少任何需要添加到应用程序代码或 AI 状态监视器中的配置?
是否可以通过流畅的映射 API 告诉实体框架将列添加到特定表中,而模型类中没有相应的属性?
是的,我可以通过在迁移中执行 SQL 脚本来实现这一点,但我更愿意在模型配置中而不是在迁移中指定它。
我正在努力寻找任何支持 .NET Core 的地理空间库,但到目前为止还没有成功。你有什么提示吗?
我的要求是: