1

我正在尝试在 Oracle 数据库上使用带有 Model-First 的实体框架。我已经从文件中安装了 ODP.NET 和 Oracle Visual Studio 工具ODTwithODAC1120320_32bit.zip,即版本11.2.0.3.20

我做了一个小测试模型,将连接字符串设置为Oracle DB,将模型的代码生成模板更改为Generate Oracle via T4 (TPT).xamlSSDLToOracle.tt. 代码生成工作正常,但生成的 SQL 不可用:

CREATE TABLE "dbo"."Entity1Set" (
   "Id" UNIQUEIDENTIFIER NOT NULL,
   "NvarcharProperty" NVARCHAR(MAX) NOT NULL
);

也不UNIQUEIDENTIFIERNVARCHAR有效的 Oracle 关键字。此外,Oracle 处理模式的方式与 SQL Server 不同,因此这些"dbo".东西不起作用。

你通常是怎么处理的?每次代码生成后更改 SQL?

还有其他方法可以将 EF 与 Oracle 和 Model-First 结合使用吗?

4

1 回答 1

2

看起来您的模型是从 SqlServer 生成的,然后传递给 SSDLToOracle.tt。SSDLToOracle.tt 文件可能不会检查它是否真的在处理 Oracle 特定的 StoreItemCollection,而只是使用它得到的结果,从而生成使用 SqlServer 类型的 Oracle 特定 SQL 的混合。您可以通过打开 edmx 文件并检查ProviderProviderManifestToken属性来检查模型是为哪个数据库生成的。

于 2013-08-20T14:38:58.113 回答