看起來你很混淆ASP.NET MVC和Entity Framework的組件。
作爲實體框架站點規定:
實體框架(EF)是一個對象關係映射器,它使.NET 開發人員使用特定於域的對象的關係數據的工作。它不需要開發人員通常需要編寫的大部分數據訪問代碼。
和MVC站點指出:
的ASP.NET MVC是 實現模型 - 視圖 - 控制器(MVC)模式的開放源碼的Web應用程序框架。
這兩個框架通過你的模型類相遇。 MVC使用模型類來定義應用程序的數據,邏輯和規則。在實體框架中,您的模型類被映射到數據庫中的表,它處理直接讀取和寫入。
通過創建CategoriesAdmin
模型類,揭露它作爲屬性在DbContext
類這樣:
public class DefaultConnection:DbContext
{
public DbSet<CategoriesAdmin> categories { get; set; }
}
實體框架將映射了模型類叫做CategoriesAdmins數據庫表。如果該表格尚不存在於數據庫中,它將自動爲您創建。實體框架中的這種方法被稱爲Code First to a new Database。
現在既然您已經有了一個存儲可用類別的表格(CategoriesAdmin
),您將需要創建第二個模型類別(爲您的示例稱爲Data
),其中包含您想要的其他信息位的屬性儲藏。
public class Data
{
// gets or sets the ID of this Data record.
public int ID {get;set;}
public string ImagePath {get;set;}
// other properties
...
}
既然您有兩個模型類,您需要在兩者之間建立關係。在SQL數據庫中,這是通過外鍵實現的。在實體框架中,您可以通過使用Navigational Properties來實現相同。
所以我們更新Data
模型類這樣:
public class Data
{
// gets or sets the ID of this Data record.
public int ID {get;set;}
public string ImagePath {get;set;}
// gets or sets the ID of the related CategoriesAdmin record.
public int CategoriesAdminId {get;set;}
// gets or sets the related CategoriesAdmin record. Entity Framework will
// automatically populate this property with an object for the related
// CategoriesAdmin record.
[ForeignKey("CategoriesAdminId")]
public virtual CategoriesAdmin CategoriesAdmin {get;set;}
// other properties
...
}
在CategoriesAdmin
屬性的ForeignKeyAttribute是那裏給實體框架的外鍵列的進一步提示從裝載的導航屬性。
最後才能夠使用新的Data
模型類與實體框架,你需要讓你有訪問您的數據的一種手段,另一個屬性添加到您的DbContext
類:
public class DefaultConnection:DbContext
{
public DbSet<CategoriesAdmin> Categories { get; set; }
public DbSet<Data> Data { get; set; }
}
現在你已經創建了您的模型類並將它們連接到實體框架中,您現在可以在MVC中使用它們。如果您將Data
模型加載到視圖中(使用DefaultConnection.Data
),則可以通過訪問Data
對象上的CategoriesAdmin
屬性來訪問相關的CategoriesAdmin記錄。
總之:兩個表格意味着你需要兩個模型。這兩種模型都可以加載到單個視圖中。
腳註:如果我的答案有很大差距,我們抱歉,因爲有很多解釋已經在其他地方解釋過,比我所能做得更好。我已經鏈接的參考文獻應該有希望填補空白。
如果您需要更多幫助,請參閱the tutorials on the ASP.NET MVC website on working with data的全部內容。他們寫得比我簡潔的寫得好得多。我會建議完全遵循它們,並在完成自己的項目之前讓示例工作,以便更好地理解這兩個框架如何工作並互相交互。
如果你的數據庫在'MS SQL Server'中,那麼只需使用'Stored Procedure'來保存所需的數據。 – firefalcon 2014-10-27 09:57:23
Im在mvc中使用模型來創建數據庫 – mohammad 2014-10-27 09:58:54