1.環境:html
windows10,vs2017,oracle 11g(32 bit),PLSQL Developer 13 (32 bit)。sql
2.準備工具:數據庫
下載oracle 11g,地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.htmlwindows
下載ODAC for Visual Studio 2017,地址:https://www.oracle.com/technetwork/topics/dotnet/downloads/odacmsidownloadvs2017-3806459.htmloracle
下載PLSQL Developer 13(32 bit) ,地址:https://www.allroundautomations.com/bodyplsqldevreg.htmlapp
3.安裝:框架
先oracle 11g安裝;tcp
而後安裝PLSQL Developer 13(32 bit) ;ide
最後安裝ODAC for Visual Studio 2017;工具
4.配置
5.配置config文件
加入以下節點,注意版本號
<oracle.manageddataaccess.client> <version number="*"> <dataSources> <dataSource alias="xxxx" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xxxx))) " /> </dataSources> <edmMappings> <edmMapping dataType="number"> <add name="bool" precision="1" /> <add name="byte" precision="2" /> <add name="int16" precision="5" /> </edmMapping> </edmMappings> </version> </oracle.manageddataaccess.client> <connectionStrings> <add name="xxxx" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=xxxx;Password=xxxx;Data Source=xxxx" /> </connectionStrings>
注意這邊的Data Source與xml中節點的名稱同樣<dataSource /> ,這裏的<edmMappings>還能夠增長int32,及int64。
若出現鏈接錯誤,能夠在connectionString中加入Persist Security Info=True;
<entityFramework> <!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />--> <defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </providers> </entityFramework>
<system.data> <DbProviderFactories> <remove invariant="Oracle.ManagedDataAccess.Client" /> <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </DbProviderFactories> </system.data>
<configSections> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </configSections>
來個完整點的,可是這個沒有數據鏈接節點
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </configSections> <system.data> <DbProviderFactories> <remove invariant="Oracle.ManagedDataAccess.Client" /> <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </DbProviderFactories> </system.data> <entityFramework> <defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> <providers> <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> </providers> </entityFramework> </configuration>
6.代碼修改
在DbContext中OnModelCreating方法內增長一句
modelBuilder.HasDefaultSchema("xxxx");這裏的xxxx是指用戶名,我用的是SYSTEM。
配置完後能夠使用EF的代碼遷移進行建表。
7.踩坑指南: