在具有Entity Framework的MVC项目中,Model具有类:
[Table("astrTableJan16")]
public class astrTable
{
[Key]
public int ID { get; set; } (...rest of variables)
在数据库中每月有一个表,所以astrTableJan16,astrTableFeb16,然后返回,astrTableDec15等我从SQL Management Studio手动创建了表,复制了原始表,
SELECT * INTO astrTableNov15 FROM dbo.astrTable
目前要使用不同的月份,手动修改[Table(“”)]条目,并运行项目(在调试器中),然后CRUD函数应用于该表。
目标是能够在运行时在这些表之间切换,以便在用户选择的月份内获得CRUD功能。将有一个DropDown列表控件显示可用月份,用户选择月份, 特定表已加载并可以修改/保存。这可能吗?
尝试过使用
中的Sql命令 using System.Data.SqlClient;
到目前为止,可以读入数据,但必须重新定义db.SaveChanges()。
如果可能的话,希望它只需要保留ONE Model类定义,否则项目每个月需要一个Model引用,如果是10年,那么有许多模型需要定义;它可以这样做,但我想以可靠性为主要目标正确设计它。
表可以在运行时动态切换吗?或者每月应该有一个模型,应用程序直接以这种方式引用表格?
答案 0 :(得分:0)
"—-"
(字符串列)。
这不是一个好的数据类型,但它与表的其他部分一致,我现在不想引入其他概念。 Month NVARCHAR(128) NOT NULL
。 然后,当您想要使用特定月份/年份时,您可以向数据库询问:(例如2016年1月)
Year INT NOT NULL
添加列后,您需要将每个现有表合并到一个表中。因此,假设您的表现在存在,每个表都有(相同的)400列。您的新表将有402列。来自每个现有表的数据将在新表中的行中堆叠。
例如: ExistingTableJan2015
ID,数据......
1,什么
2,别的什么
和ExistingTableMar2015
ID,数据......
4,yadda
5,yada yada
将合并到NewTable
ID,月,年,数据
1,2015年1月,有事 2,2015年1月,其他内容
4,2015年3月,yada
5,2015年3月,yada yada
所以现在你有一个存储所有数据的表,而且不需要在运行时切换表。