小项目ASP .Net Web API,bd postgresql。
该数据库booksdb是在管理面板中手动创建的。有一张桌子books,位于shemas.public。手动添加了几行数据(QueryTool也可以通过管理面板中的界面)
语境:
public class BookStoreDbContext : DbContext
{
public BookStoreDbContext(DbContextOptions<BookStoreDbContext> options)
: base(options)
{
}
public DbSet<BookEntity> Books { get; set; }
}
连接字符串:
"ConnectionStrings": {
"BookStoreDbContext": " ......User ID=postgres;Database=booksdb;"
错误:
项目正在正确构建。
没有前端,我使用 Swagger,它应该返回模拟数据字符串。
错误前调试:
该库可以从外部访问,例如从 Python:
import psycopg2
conn = psycopg2.connect(dbname="books1db",
host="127.0.0.1",
user="postgres",
password="my_password",
port="5432")
cursor = conn.cursor()
query = "SELECT * FROM books"
cursor.execute(query)
result = cursor.fetchall()
cursor.close()
conn.close()
for row in result:
print(row)
关于这个错误有很多记载(例如),但所有情况都是(1)代码中数据库创建不正确(2)代码中查询不正确。 “不正确”是因为大小写不正确,或者括号和引号不正确,或者必须通过模式名称访问表。就我而言,这些都不存在。


从评论来看,我不太明白您在使用 DB 和 时到底理解了什么
EF Core,但我决定描述几个理论上应该对您有帮助的可能选项数据库优先
是啊,是啊。由于您通过手动创建了数据库,因此您应该使用能够为您正确生成数据库上下文和所有实体(表)的
pgAdmin方法。Database First让我简单描述一下您需要做的流程。来源在这里,下面只是一个简短的分步说明。
通过以下方式执行的命令
Package Manager Console:connectionString或者从项目配置文件中使用:可能的命令参数:
这样,您可以从现有数据库中提取所有必要的数据。
代码优先
原文在这里
您可以从代码生成数据库。首先创建您需要的类
Book,它描述您在数据库中所需的数据。接下来,根据本文以及相应的配置创建一个DbContext。迁移完成后,您将拥有一个可以交互的生成数据库。我还建议阅读本文
Generic Repository中有关正确注册的内容asp.net