我試圖在Oracle數據庫上使用實體框架和Model-First。我從文件ODTwithODAC1120320_32bit.zip
安裝了ODP.NET和Oracle Visual Studio工具,該文件的版本號爲11.2.0.3.20
。實體框架Model-First和Oracle
我做了一個小測試模型,將連接字符串設置爲Oracle DB,將模型的代碼生成模板更改爲Generate Oracle via T4 (TPT).xaml
和SSDLToOracle.tt
。代碼代工作,但生成的SQL是不可用:
CREATE TABLE "dbo"."Entity1Set" (
"Id" UNIQUEIDENTIFIER NOT NULL,
"NvarcharProperty" NVARCHAR(MAX) NOT NULL
);
無論UNIQUEIDENTIFIER
也不NVARCHAR
是有效的Oracle關鍵字。此外,Oracle處理模式的方式與SQL Server不同,所以"dbo".
的東西不起作用。
你通常如何處理?每代碼生成後更改SQL?
是否有其他方式使用EF與Oracle和Model-First?
根據[Oracle的教程](http://download.oracle.com/oll/obe/EntityFrameworkOBE/EntityFrameworkOBE.htm),您必須在Model First中執行以下操作_「爲DDL生成模板選擇SSDLtoOracle.tt 。確保在數據庫生成工作流屬性中選擇通過T4生成Oracle(TPT).xaml以確保生成每個類型DDL的表。「_。 – Ben
從這個問題看來,你已經完成了Ben提出的步驟。我會說這是Oracle工具的一個問題... –
您確定您不是SSDLToOracle.tt針對Sql Server生成的模型嗎?您可以從您的edmx文件(具有'Provider'和'ProviderManifestToken'屬性的部分)粘貼商店模型 - .tt可能會盲目地爲其StoreItemCollection生成代碼,即使StoreItemCollection是爲其他數據庫創建的。 – Pawel