C# 在MVC中动态选择或创建新数据库

C# 在MVC中动态选择或创建新数据库,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,我创建了一个开票应用程序,希望用户在会话开始时选择财政年度 这意味着,当他们选择某一年时,如果该年不存在,则会为该年创建一个新表(或整个新数据库),否则会相应地选择现有表 我尝试使用“Session”,但在dbcontext类中它不知何故无法工作 请提出正确有效的方法来实现这一点。 提前谢谢 据我所知,EF中有一个CreateModel或CreateDatabase if not exists选项可用 public class SchoolDBContext: DbContext {

我创建了一个开票应用程序,希望用户在会话开始时选择财政年度

这意味着,当他们选择某一年时,如果该年不存在,则会为该年创建一个新表(或整个新数据库),否则会相应地选择现有表

我尝试使用“Session”,但在dbcontext类中它不知何故无法工作

请提出正确有效的方法来实现这一点。
提前谢谢

据我所知,EF中有一个CreateModel或CreateDatabase if not exists选项可用

public class SchoolDBContext: DbContext 
{
    public SchoolDBContext(): base("SchoolDBConnectionString") 
    {
        Database.SetInitializer<SchoolDBContext>(new CreateDatabaseIfNotExists<SchoolDBContext>());

        //Database.SetInitializer<SchoolDBContext>(new DropCreateDatabaseIfModelChanges<SchoolDBContext>());
        //Database.SetInitializer<SchoolDBContext>(new DropCreateDatabaseAlways<SchoolDBContext>());
        //Database.SetInitializer<SchoolDBContext>(new SchoolDBInitializer());
    }

    public DbSet<Student> Students { get; set; }
    public DbSet<Standard> Standards { get; set; }
}
公共类SchoolDBContext:DbContext
{
public SchoolDBContext():base(“SchoolDBConnectionString”)
{
SetInitializer(新的CreateDatabaseIfNotExists());
//SetInitializer(新的DropCreateDatabaseIfModelChanges());
//SetInitializer(新的DropCreateDatabaseAlways());
//SetInitializer(new SchoolDBInitializer());
}
公共数据库集学生{get;set;}
公共数据库集标准{get;set;}
}
这里还有链接

在几乎所有商业应用程序中动态创建数据库都是一个坏主意。即使是在域上拆分数据库也是可疑的,除非您有充分的理由这样做。数据库能够按年份、客户或任何其他方式进行查询。我会考虑将所有形式化的和单一的数据库放在第一位之上的所有选项,我理解,但是其他选项会是什么样的呢?是的,我已经使用过这个选项,但问题是表名必须根据用户的输入。我没法做到这一点。例如,如果用户选择2017-18年,代码应该类似于:public DbSet students 201718{get;set;}public DbSet standards 201718{get;set;}谢谢。