Add configuration type binding and implement database connection, disable NativeAOT.
Add: binding setting file items to `AppSettings` class so to provide DI access as `IOptions<OptixServeSettings>`. Add: EF Core and DbContext to access database in services. This results in disabling NativeAOT due to poor supports for *pre-compiled query*, however many design are optimized for AOT for later re-adoption. Add: `DesignTimeDbContextFactory` to support EF Core migrations in NativeAOT. (Kept for re-enabling AOT.) Add: `DbInitializer` for ensuring database connecting in startup. Add: `ConfigurationHelper.CreateDefaultBuilder()` to read configuration files in default locations. Note this method is currently ONLY used by `DesignTimeDbContextFactory`. Refactor is expected. Add: `CommonErrorDto` for simple error message. Add: `VersionEndpoint` ONLY for debugging and testing purpose. Verylikely to be removed in the future. Other: many utilities and fixes easy to understand. Note: EF Core migrations are excluded in the early development. Not expected to be added in version control before v1.0 beta.
This commit is contained in:
21
OptixServe.Core/Data/AppDbContext.cs
Normal file
21
OptixServe.Core/Data/AppDbContext.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using OptixServe.Core.Models;
|
||||
|
||||
namespace OptixServe.Core.Data;
|
||||
|
||||
public class AppDbContext(DbContextOptions options) : DbContext(options)
|
||||
{
|
||||
public DbSet<User> Users { get; set; } = null!;
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<User>(user =>
|
||||
{
|
||||
user.HasKey(u => u.Id);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<User>().HasData([
|
||||
new() {Id = "1", UserName = "admin", Password = "admin12345"}
|
||||
]);
|
||||
}
|
||||
}
|
11
OptixServe.Core/Data/DbInitializer.cs
Normal file
11
OptixServe.Core/Data/DbInitializer.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace OptixServe.Core.Data;
|
||||
|
||||
public class DbInitializer(AppDbContext dbContext)
|
||||
{
|
||||
private readonly AppDbContext _context = dbContext;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
_context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user