之前在一個使用SqlServer數據庫的項目中使用過SubSonic,感覺挺好,沒遇到什麼問題。
於是在上一個網站毫不猶豫的也選擇了Subsonic2.1,可這次很失望。SubSonic2.1 to Oracle11並不 像對SqlServer的支持那麼好,很多時間,忙於給Subsonic補漏。
這次,想改用ADO.NET EF + EFOracleProvider。
關於EFOracleProvider的使用介紹可以參考一下這裡:
1.ADO.NET Entity Framework支持多Provider
2.Using EF Oracle Sample Provider with EDM Designer
可是剛開始就遇到問題,在使用Edmgen.exe生成模型時,提示char和timestamp(x)類型不支持!
無奈,要動刀了。
還好,EfOracleProvider的代碼不多,不用多久就找到了陣眼。
EfOracleProvider/Resources/EFOracleProviderManifest.xml,在這個文件中聲明了Oracle字段 和.net數據類型的映射關系。
打開此文件,添加一段:
<Type Name="char" PrimitiveTypeKind="String">
<FacetDescriptions>
<MaxLength Minimum="1" Maximum="4000" DefaultValue="4000" Constant="false" />
<Unicode DefaultValue="false" Constant="true" />
<FixedLength DefaultValue="true" Constant="true" />
</FacetDescriptions>
</Type>