我已經定義了一個接口:無法創建EF生成的DbContext類控制器
public interface ICMDBContext
{
DBSet<Building> {get;}
DBSet<Room> {get;}
more DBSet methods...
string Save()
}
我有產生的DbContext名爲CMDB_DataModelContainer類。
我有一個部分類CMDB_DataModelContainer它實現ICMDBContext它看起來像這樣(是的,兩者在同一個命名空間):
public partial class CMDB_DataModelContainer : ICMDBContext
{
string Save() { implemenation... }
}
一切編譯所有罰款和花花公子,但是當我嘗試創建一個控制器和使用CMDB_ModelConatiner作爲上下文類(創建一個強類型的控制器)我得到的錯誤
有錯誤發生「CMDB.Domain.Models.CMDB_DataModelContainer」。嘗試重建您的項目。
我刪除了部分類,並能夠創建控制器。任何想法爲什麼會發生?
要添加,DBContext類位於單獨的項目中。
它是在一個單獨的項目並不重要。我在同一個項目中創建了一個包含DBcontext類和MVC3應用程序的測試項目,但仍然不成功。
我想問一個問題,如果有人在使用Model第一種方法時實際設置了存儲庫。我發現自己遇到問題後,嘗試應用這種模式時,首先使用模型。
如果您想重新創建問題,請創建一個MVC 3(或4,我使用了3)。這是我爲自己重新創建測試所做的。
添加一個新的ADO.Net實體數據模型。
- 創建兩個實體:塔克和灌裝
- 「名稱」標屬性添加到每個。
- 添加關聯m < ---> m
- 在models文件夾中創建一個名爲「Partial」的新文件夾。
- 添加一個新類 - 該類應該與Context類相同(如果您保留默認名稱,它應該是Model1Container)並且位於相同的命名空間中。
例如
public partial class Model1Container
{
}
- 添加一個新的控制器「TacoController」爲強類型對,你猜對了,塔可,並使用Model1Container作爲上下文類。 Voila轉載。是的,我喜歡炸玉米餅。
什麼*文件名*包含你的'CMDB_DataModelContainer:ICMDBContext'? – 2012-07-11 17:09:47
CMDB_Model.cs。我不相信C#中的文件名與Java中的文件名相關。我試着將文件重命名爲DBContext生成的文件。仍然沒有去。 – Erik 2012-07-11 17:58:27
你在哪裏實現了你的DbSet屬性訪問器? (DbSet的實際代碼爲 {get ...})你也可能想在這裏使用IDbSet(可能沒有什麼區別,但它是抽象的,而不是你指的具體實現) –
2012-07-11 19:19:26