oliverbooth.dev/OliverBooth.Blog/Data/BlogContext.cs

56 lines
1.9 KiB
C#
Raw Normal View History

2023-08-11 14:51:20 +00:00
using Microsoft.EntityFrameworkCore;
using OliverBooth.Blog.Data.Configuration;
namespace OliverBooth.Blog.Data;
/// <summary>
/// Represents a session with the blog database.
/// </summary>
internal sealed class BlogContext : DbContext
{
private readonly IConfiguration _configuration;
/// <summary>
/// Initializes a new instance of the <see cref="BlogContext" /> class.
/// </summary>
/// <param name="configuration">The configuration.</param>
public BlogContext(IConfiguration configuration)
{
_configuration = configuration;
}
/// <summary>
/// Gets the collection of blog posts in the database.
/// </summary>
/// <value>The collection of blog posts.</value>
public DbSet<BlogPost> BlogPosts { get; private set; } = null!;
/// <summary>
/// Gets the collection of templates in the database.
/// </summary>
/// <value>The collection of templates.</value>
public DbSet<Template> Templates { get; private set; } = null!;
/// <summary>
/// Gets the collection of users in the database.
/// </summary>
/// <value>The collection of users.</value>
public DbSet<User> Users { get; private set; } = null!;
/// <inheritdoc />
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string connectionString = _configuration.GetConnectionString("Blog") ?? string.Empty;
ServerVersion serverVersion = ServerVersion.AutoDetect(connectionString);
optionsBuilder.UseMySql(connectionString, serverVersion);
}
/// <inheritdoc />
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new BlogPostConfiguration());
modelBuilder.ApplyConfiguration(new TemplateConfiguration());
modelBuilder.ApplyConfiguration(new UserConfiguration());
}
}