這問題搞了我一下午啊,都怪vs2012,Entity Framework不能自動生成代碼的原因!

這陣子做項目,重新拾起Silverlight。正好前一陣子裝系統,果斷就把VS2012裝了上去,不想這回就遇到了問題。

我創建的項目是Silverlight Business Application,Silverlight版本5,自帶WCF RIA。既然用的也是沒啥新意的SQL Server,那就順帶用上Entity Framework做ORM吧。

以上這些都沒啥難度。我先創建的數據庫表,然後創建ADO.Net 實體模型。下一步自然是添加新的域服務(Domain Service),然後關聯到剛纔創建的實體模型。

不幸在這兒卡主了:


可用的上下文類一個都木有,並且有提示說“有些Entity Framework上下文類可能已被排除”!


當然啦,這種問題難不倒我,谷歌了半天,終於有結果了。

原因

在VS2012中,Entity Framework缺省地基於DbContext創建上下文類(這個詞好彆扭),然而WCF RIA不支持它。

解決方法

這個我就直接翻譯下哈:

爲了解決這個問題,你必須把它轉成一個基於ObjectContext的模型。按下面的步驟做就行了:

1、在設計器中打開你的實體模型(如有必要,點一下設計器中空白的地方,保證沒有對象處於選中狀態)。

2、在屬性窗口中,更改代碼生成策略,從改到默認


3、刪除那兩個.tt文件。這裏假設從創建實體模型以來,你沒有修改這些文件。如果你有修改過,那麼這些修改將會丟失。


4、重新生成項目。

現在,問題解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章