【问题标题】:Entity Framework create multiple tables at runtime C#实体框架在运行时创建多个表 C#
【发布时间】:2021-12-30 18:46:31
【问题描述】:

我尝试使用 Sqlite 熟悉 EF。

我设法创建了一个模型,并基于该模型使用迁移创建了一个表。

我的问题是如何创建多个相同模型的表?

模型示例:

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}

我的应用程序数据库上下文示例:

public class ApplicationDbContext:DbContext
{
    public string DbPath { get; private set; }

    public DbSet<Blog> Blogs { get; set; }

    public ApplicationDbContext()
    {
        DbPath = $"HelloBlog.db";
    }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
       => options.UseSqlite($"Data Source={DbPath}");

}

我的问题是如何在运行时添加新表,例如。 Blog_{Date}?

因为我事先不知道要创建多少张表。

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    我的问题是如何在运行时添加新表,例如。博客_{日期}?因为我事先不知道要创建多少张表。

    您的数据管理方法存在缺陷;您正在使用表名来存储应该存储在列中的数据

    在您的 Blogs 表中有一个 PostedDate 列或类似的列,将您要编码到表名中的任何数据存储到列中。索引列

    无论你之前想做什么,比如:

    SELECT * FROM Blog_2000_01_01
    SELECT * FROM Blog_2000_01_02
    

    应该这样做:

    SELECT * FROM Blog WHERE PostedDate = '2000-01-01'
    SELECT * FROM Blog WHERE PostedDate = '2000-01-02'
    

    在 EF 术语中是这样的:

    context.Blog.Where(b => b.PostedDate == new DateTime(2000,1,1))
    context.Blog.Where(b => b.PostedDate == new DateTime(2000,1,2))
    

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 2017-04-03
      • 2012-07-07
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多