C# 如何在MVC下动态创建和使用数据库表

C# 如何在MVC下动态创建和使用数据库表,c#,sql,asp.net-mvc,web-applications,C#,Sql,Asp.net Mvc,Web Applications,我试图弄清楚如何在MVC中动态创建具有不同名称的模型相关表 我已经做了很多搜索,但似乎找不到一个例子或任何关于如何做到这一点的东西 我需要的是基于同一模型的多个DB表。表之间唯一的区别是名称。但我不知道如何使用动态名称创建这些表,除了手动执行sql查询。我很难相信这是唯一的办法 下面是我试图做的一个简化的变体 我的模型: public class SomeClass { public int Id { get; set; } public int SomeValue1 { get;

我试图弄清楚如何在MVC中动态创建具有不同名称的模型相关表

我已经做了很多搜索,但似乎找不到一个例子或任何关于如何做到这一点的东西

我需要的是基于同一模型的多个DB表。表之间唯一的区别是名称。但我不知道如何使用动态名称创建这些表,除了手动执行sql查询。我很难相信这是唯一的办法

下面是我试图做的一个简化的变体

我的模型:

public class SomeClass
{   public int Id { get; set; }
    public int SomeValue1 { get; set; }
    public int SomeValue2 { get; set; }
}
利用率:

var context;

private void CreateTable(string strTableName, SomeClass theclass)
{
    // Create the table here using the supplied name
}

private SomeClass GetTable(string strTableName)
{   SomeClass theclass;
    // Read the table here using the supplied name
    return theclass;
}

private void workRoutine()
{   SomeClass theclass1 = new SomeClass();
    SomeClass theclass2 = new SomeClass();
    SomeClass rdclass1;
    SomeClass rdclass2;

    theclass1.SomeValue1 = 1;
    theclass1.SomeValue2 = 2;

    theclass2.SomeValue1 = 3;
    theclass2.SomeValue2 = 4;

    CreateTable("myTestName1", theclass1);
    CreateTable("myTestName2", theclass2);

    rdclass1 = GetTable("myTestName1");
    rdclass1 = GetTable("myTestName2");
}

如果您计划在运行期间添加表并更改数据库的整体模式,我建议您先检查一下,看看这是否是您想做的唯一方法,其次考虑不要使用MVC/实体框架,我不认为这是唯一的,但我相信这是最干净的方法。它将提供一种更直接的编码方法,并且更易于维护/遵循。我相信我可以用另一种方法来做,但这离短路径还有很长的路要走。这闻起来真的很糟糕——更像是一个糟糕的设计决策,而不是一个“短路径”。为什么要动态创建表?是什么阻止您将要放入这些表中的数据转换为行。动态创建表格是一个非常糟糕的主意。无论如何,非常感谢,因为我找到了另一种方法;然而,我不得不说,动态创建表是一个坏主意,就像C\C++中的硬goto是坏主意一样。就个人而言,我不使用它们;然而,那是因为我最初被教导他们是一个坏主意。20年的经验告诉我,这是一个偏好的问题,它们有自己的用途,无论是设计简单还是其他。为什么动态创建表是个坏主意?在其他场景中一直都是这样,但在MVC中这是一个禁忌。我不明白这一点。