2017-01-05 41 views
3

我正在使用EF 6.如何使用我自己的類作爲edmx模型類?

我想使用我自己的域類作爲edmx模型類,所以我刪除了tt生成的模型類並將edmx build Action更改爲None。

當我試圖執行一個選擇,我得到MetadataException

DbContext context = new DbContext("name=BaseObjectsEntities"); 
var u = context.Set<User>().Where(x => x.Id == 1).FirstOrDefault(); 

與生成的TT模型類作品完美,但不符合我自己的類。

我應該怎麼做或配置我的類與edmx鏈接。

ps:我的類已經有他們的類和屬性名稱等於edmx的。

+0

'完美地與生成的tt模型類一起工作,但與我自己的類無關。「<=那麼究竟發生了什麼?請記住,我們無法看到您的電腦顯示器,因此對**正在發生的事情以及與預期行爲有何不同之處的描述將會受到讚賞。 – Igor

+0

如果我不刪除TT類和更改對象 來自: - context.Set 到: - context.Set 它會工作,但我不得不刪除生成的,用我自己的類。 –

+0

你有沒有考慮過把代碼放在第一步,在C#中定義類和映射,而不是使用T4模板? – Igor

回答

2

我解決我的問題,

這些都是我做的步驟:

  • 如果您還沒有

    創建您自己的域類;

  • 創建數據庫

    創建表

  • 創建EDMX

    現在仔細聽,當你完成EDMX的創建,Visual Studio將在打開EDMX設計模式,不保存,不關閉,不要做任何事情,只是改變實體模型及其名稱屬性(在表示模型的圖塊中),確保實體的名稱和它的屬性與域中指定的相同,稍後我會告訴爲什麼不保存或關閉。

不要保存或關閉設計窗口的是,如果你這樣做,你的域類是在他們將在emdx是生成了.TT類將被覆蓋在同一個項目創建。

刪除所有集成到emdx且不保存的.tt文件。

  • 在EDMX現在右鍵點擊>屬性

擦除無論是在「自定義工具」創作的,並確保生成操作EntityDeploy

當您刪除的文字創作的在自定義工具中,點擊輸入,然後構建解決方案

現在它無線我會工作。

  • 我忘了提,如果這些步驟不起作用,有一個祕密的步驟:

從Visual Studio和項目文件夾刪除項目,重建它,並重新啓動初始腳步。

+0

微軟Konami碼? Hollygod!這個對我有用! –

相關問題