簡體   English   中英

如何在運行時在MVC中的表之間切換?

[英]How to Switch between Tables in MVC at runtime?

在帶有Entity Framework的MVC項目中,模型具有以下類:

[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功能。 會有顯示可用月下拉列表控件,用戶挑選月份, 具體的正裝表,可以修改/保存。 這可能嗎?

嘗試使用Sql命令從

 using System.Data.SqlClient;

到目前為止,可以讀取數據,但是必須重新定義db.SaveChanges()。

並希望它盡可能地僅保留一個Model類定義,否則該項目每個月將需要一個Model引用,如果要使用10年,則需要定義許多Model。 可以通過這種方式完成,但是我想以可靠性為主要目標進行適當的設計。

可以在運行時即時切換表嗎? 還是每月應該有一個Model,並且應用程序以這種方式直接引用該表?

  • 將一個月列添加到表中: Month NVARCHAR(128) NOT NULL (字符串列)。 這不是一個很好的數據類型,但它與表的其余部分保持一致,我現在不想介紹其他概念。
  • 在表中添加年份列: Year INT NOT NULL

然后,當您要使用特定的月份/年份時,您可以像這樣向數據庫詢問:(例如,2016年1月)

SELECT * FROM table WHERE Month = 'January' AND Year = 2016

添加列后,您將希望將每個現有表合並到一個表中。 因此,可以說您的表(現在已經存在)每個都有(相同)400列。 您的新表將具有402列。 每個現有表中的數據將堆積在新表中的行中。

例如:ExistingTableJan2015

ID,數據...
1,東西
2,別的東西

和現有表2015年3月

ID,數據...
4,yadda
5,亞達亞達

將合並到NewT​​able

ID,月,年,數據
2015年1月1日
2015年1月2日,還有其他內容
2015年3月4日,亞達
2015年3月5日,yada yada

因此,現在您只有一個表來存儲所有數據,並且無需在運行時切換表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM