2012-12-02 19 views
12

我有我的MS SQL數據庫中的3個表,我已經添加了一個EntityFramework(最新)到我的項目,我已經導入這3個表。第一個問題是沒有實體建成,所以我將「代碼生成策略」從None更改爲DefaultX已包含EntityFramework的定義Y? (簡單的數據庫)

構建之後,我得到

X已包含在實體的所有屬性用於Y

的定義。

當仔細觀察時,它產生了一個部分例如Users.cs和一個部分UserMainModel.Designer.cs

它爲什麼生成User.cs?我在另一個項目中有類似的設置,並且EF設置了相同的設置,沒有User.cs

EDIT1:我看到一件事情,不同的和多數民衆使用設置在失敗的項目虛假強烈的空間類型,然而,不能夠將其設置爲true(灰色)?

回答

20

您應該爲.edmx文件使用None代碼生成策略。或者刪除MainModel.ttMainModel.Context.tt模板,它們將生成模型實體和上下文。

如果使用Default代碼生成策略,那麼實體和上下文將生成MainModel.Designer.cs文件。那將是標準實體,從EntityObject繼承,上下文將繼承ObjectContext。使用實體框架5,我們生成了POCO實體。整個生成過程在T4模板中完成,該模板生成從DbContext繼承的上下文,以及沒有某種基本類型(只有對象)的POCO實體。

當您在edmx設計器中同時生成兩個模板並啓用代碼生成時,將生成兩組實體。這就是你名字衝突的原因。

+0

謝謝!如果我將代碼切換爲無,我會注意到這種類型將按照您的說法生成,但它將被命名爲用戶,就像數據庫中的表一樣。我需要將其作爲解決方案中的實體稱爲用戶。這可能隨着POCO一代而改變嗎?我曾嘗試更改EF中表的名稱,但這不起作用?通常我會刪除EF中的所有實體並再次添加它們,所以如果解決方案適用於該實例,那將非常有用。 – Ivy

+0

是的,它非常簡單。打開edmx設計器,選擇'Users'實體,並將其重命名爲'User'(雙擊etity標題)。然後保存edmx文件 - 「MainModel.Context.tt」將重新生成實體類(您將看到'User.cs'文件而不是'Users.cs')。 –

+0

對不起,但不起作用,即使實體標題設置爲用戶,它也只能識別用戶。 – Ivy

3
  1. 右鍵單擊實體模型。
  2. 轉到屬性並刪除「自定義工具」中的默認名稱。
  3. 指定model.tt和model.context中的edmx
  4. 構建並執行它,您將不會出錯。
+0

非常感謝。經過多次鬥爭,它解決了我的問題。 – Dilip0165