问题描述
我遇到了一个我以前从未见过的奇怪问题,架构命名优先使用 EF 核心代码。
我刚刚创建了一个新类 LogEntry
,用于记录发送给我们用户的短信和电子邮件。
public class LogEntry
{
public LogEntry(Guid id)
{
Id = id;
}
public Guid Id { get; set; }
public Provider Provider { get; set; } // Enum
public string Content { get; set; }
public string Recipient { get; set; }
...
}
然后我在我的数据库上下文类中添加了配置,在 OnModelCreating(modelBuilder modelBuilder)
public virtual DbSet<LogEntry> Log { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<LogEntry>(entity =>
{
entity.HasKey(log => log.Id);
entity.HasIndex(log => log.Date);
entity.HasIndex(log => log.Provider);
entity.HasIndex(log => log.Recipient);
...
});
}
然后我运行 dotnet ef migrations add SomeMigration
来实际添加迁移。我设置了自动迁移,以便在项目启动时自动更新我的数据库。到目前为止一切顺利。
现在,一旦我去查看它创建的新表,我就为数据库架构制定了一个奇怪的命名约定。
我的 IIS 网站应用程序池与特定的托管 AD 用户一起运行,我们称之为 msvc-log-api
我习惯于 EF 总是使用 dbo
架构,因为它默认使用该架构,但出于某种奇怪的原因,EF 决定创建一个以我的托管 AD 用户 mydomain\msvc-log-api$
命名的新架构.这意味着我的表按以下方式命名:
mydomain\msvc-log-api$.__EFMigrationHistory
mydomain\msvc-log-api$.Log
知道为什么会发生这种情况吗,我真的需要添加 modelBuilder.HasDefaultSchema("dbo")
来缓解这个问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)