我的控制台项目中有一个SQLite数据库,此连接字符串在DbContext设置中运行良好:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=PubDatabase.db")
当我编译时,将在ConsoleApp>bin>DEBUG>net6.0>PubDatabase.db中创建数据库。在我的ASP.NET Core项目中,我使用appsettings.json设置连接字符串:
"ConnectionStrings": {
"PubConnection": "Data Source=../PubDatabase.db"
我将PubDatabase.db文件放在这个文件夹中:APIProject>bin>DEBUG>net6.0。
在我使用的Program.cs中:
builder.Services.AddDbContext<PubContext>(
opt=>opt.UseSqlite(builder.Configuration.GetConnectionString("PubConnection"))
我的DbContext:
namespace PublisherData;
public class PubContext:DbContext
{
public DbSet<Author> Authors { get; set; }
public DbSet<Book> Books { get; set; }
public DbSet<Artist> Artists { get; set; }
public DbSet<Cover> Covers { get; set; }
public PubContext(DbContextOptions<PubContext> options)
:base(options)
{
}
但当我在AuthorsController中尝试此操作时:
[Route("api/[controller]")]
[ApiController]
public class AuthorsController : ControllerBase
{
private readonly PubContext _context;
public AuthorsController(PubContext context)
{
_context = context;
}
// GET: api/Authors
[HttpGet]
public async Task<ActionResult<IEnumerable<Author>>> GetAuthors()
{
return await _context.Authors.ToListAsync();
}
我得到了这个错误:
我应该将数据库放在哪里才能通过连接字符串访问它?
1条答案
按热度按时间ivqmmu1c1#
我做了一个简单的测试,你可以按照我下面的步骤操作。
首先,安装NuGet包:
然后,创建上下文:
添加连接字符串:
Appsettings.json:
Program.cs:
最后,迁移和更新数据库:
这三个文件出现在目录结构中:
测试结果:
希望这能对你有所帮助。