我不知道我哪里做错了。
我的数据库(Postgre)中有 2 个模式:BooksStore 和 PollHub。 我的项目应该使用 BooksStore。我使用 ef 代码优先方法在架构中创建表。
所以我用谷歌搜索了两天并尝试了所有可能的解决方案,但没有任何效果。
这里是我的代码中的一些片段:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.HasDefaultSchema("booksstore");
builder.Entity<BookEntity>().ToTable("Books", schema: "BooksStore");
base.OnModelCreating(builder);
}
我的连接字符串:“主机=;端口=5432;数据库=postgres;SearchPath=BooksStore;用户名=postgres;密码=;” 我尝试过不使用搜索路径 - 都是一样的。
如果需要,我可以提供更多代码片段或其他内容。
我将我的模式的使用和创建授予了 public 和 postgres 角色(但我猜它默认情况下作为所有者具有使用和创建)。
有人知道我下一步应该尝试什么吗?我的数据库配置有问题吗?
如果架构已经存在,您可以在下面编写,表格将创建 确保模式名称应与您创建的完全相同
public BooksContext(DbContextOptions<BooksContext> options) : base(options) { }
public DbSet<Book> Books { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
builder.HasDefaultSchema("BooksStore");
}