2016-12-13 150 views
0

我在Visual Studio 2015中使用實體框架6數據庫優先。 有時,當我修改.edmx圖並保存更改時,所有.cs類(用於表格)都從代碼生成模型中刪除.tt文件,我無法讓這些回報。 也適用於從零創建實體數據模型。EF 6數據庫優先代碼生成項目

有人知道這個問題的原因是什麼,最後應該如何解決這個問題?

感謝任何幫助。

我已經修改了我的實體數據模型與此:(不知道這可能是原因或其他)打開yourModel.tt後檔 查找

* EF5 Grdiview only Count & ReadOnly /並更換兩次出現「ICollection」與「ObservableListSource」(第296和484行)。 使用「ObservableListSource」(第50行)查找並替換第一次出現的「HashSet」。 不要替換稍後在代碼中找到的第二次出現的HashSet。/*

+0

您是否嘗試重新構建項目?正常的行爲是當你重建它應該重新創建類。 – Seminda

+0

我嘗試重建並嘗試刪除.tt文件,然後重新創建這些文件,但問題仍然存在。 也許我應該先從數據庫或代碼中使用代碼? – iolah2

回答

1

您正在使用數據庫優先方法並手動修改.edmx,因此該模型無法在db表中找到相應的映射。如果要手動對.edmx進行更改,請嘗試使用模型優先方法,或者先嚐試更改數據庫並稍後更新.edmx。

0

如果沒有生成類,則表示edmx文件中存在錯誤,嘗試打開它並驗證它,可以通過右鍵單擊edmx文件並單擊驗證來驗證。

至於.tt文件,右鍵單擊並選擇「運行自定義工具」,看看代碼是否生成或沒有。

建議:切換到代碼優先:)

+0

我只是修改edmx添加一個新的entitiy,沒有PK。 我的老師說我應該給類似實體的父類。 示例NameTitle,語言等 這些只是它們具有ID(NameTitleID,LanguageID)和一個字符串(Description,具有不同的長度)。 當我想和一個具有這2個道具的實體並繼承其他人時,在發生這種失敗後。 但是它也發生了,當我修改數據庫,從數據庫刷新並保存edmx。 ObservableListSource可以是這個原因,還是什麼? – iolah2

+0

對不起,我發現很難理解你的評論,你不應該手動修改edmx或者更改生成的代碼,因爲只要代碼生成器運行它就會丟失 –