<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jaroslaw Kowalski : EFOracleProvider</title><link>http://blogs.msdn.com/jkowalski/archive/tags/EFOracleProvider/default.aspx</link><description>Tags: EFOracleProvider</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Using EF Oracle Sample Provider with EDM Designer</title><link>http://blogs.msdn.com/jkowalski/archive/2008/10/24/using-ef-oracle-sample-provider-with-edm-designer.aspx</link><pubDate>Fri, 24 Oct 2008 20:24:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9015021</guid><dc:creator>jkowalski</dc:creator><slash:comments>15</slash:comments><comments>http://blogs.msdn.com/jkowalski/comments/9015021.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jkowalski/commentrss.aspx?PostID=9015021</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jkowalski/rsscomments.aspx?PostID=9015021</wfw:comment><description>&lt;p&gt;Many people are asking if it is possible to use &lt;a href="http://code.msdn.microsoft.com/EFOracleProvider"&gt;EFOracleProvider&lt;/a&gt; with EDM Designer in Visual Studio 2008 SP1. The answer is yes, but because the sample doesn't include a DDEX provider required for VS integration, there are certain steps that have to be run manually. &lt;/p&gt;  &lt;p&gt;I've compiled a step-by-step guide for those interested in trying this out (this assumes NorthwindEF sample database installed according to instructions included with the sample, but it should be straightforward to adjust it to your own setup)&lt;/p&gt;  &lt;h2&gt;PART 1 : INSTALLING ORACLE SAMPLE PROVIDER&lt;/h2&gt;  &lt;p&gt;1. Download and unzip EFOracleSampleProvider.zip from &lt;a href="http://code.msdn.com/EFOracleProvider"&gt;http://code.msdn.com/EFOracleProvider&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Follow instructions in the README.txt to set up a sample database. &lt;/p&gt;  &lt;p&gt;3. Open elevated Visual Studio instance. Build the sample project. &lt;/p&gt;  &lt;p&gt;4. Open elevated command prompt and open machine.config using notepad:&amp;#160; &lt;br /&gt;&lt;strong&gt;notepad %WINDIR%\Microsoft.NET\Framework\v2.0.50727\config\machine.config&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;5. Find &amp;lt;DbProviderFactories&amp;gt; section and add EFOracleProvider entry:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EF Oracle Data Provider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;invariant&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EFOracleProvider&amp;quot;&lt;/span&gt; 
     &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EF Provider for Oracle testing&amp;quot;&lt;/span&gt; 
     &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EFOracleProvider.EFOracleProviderFactory, EFOracleProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;6. The completed system.data section has to look similar to this: &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DbProviderFactories&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Odbc Data Provider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;invariant&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.Odbc&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.Net Framework Data Provider for Odbc&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;OleDb Data Provider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;invariant&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.OleDb&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.Net Framework Data Provider for OleDb&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;OracleClient Data Provider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;invariant&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.OracleClient&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.Net Framework Data Provider for Oracle&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SqlClient Data Provider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;invariant&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.SqlClient&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.Net Framework Data Provider for SqlServer&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;strong&gt;&lt;em&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EF Oracle Data Provider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;invariant&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EFOracleProvider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EF Provider for Oracle testing&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;EFOracleProvider.EFOracleProviderFactory, EFOracleProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;/em&gt;&lt;/strong&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Microsoft SQL Server Compact Data Provider&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;invariant&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.SqlServerCe.3.5&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;.NET Framework Data Provider for Microsoft SQL Server Compact&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DbProviderFactories&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2&gt;PART 2: GENERATING MODEL FROM ORACLE DATABASE&lt;/h2&gt;

&lt;p&gt;7. Create a new project in VS. For simplicity let's create a console application&lt;/p&gt;

&lt;p&gt;8. Open elevated command prompt. Enter the directory that contains the newly created project and run the following command:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;%WINDIR%\Microsoft.NET\Framework\v3.5\edmgen.exe /provider:EFOracleProvider /mode:fullgeneration &lt;br /&gt;      /connectionstring:&lt;span class="str"&gt;&amp;quot;data source=XE;user id=edmuser;password=123456&amp;quot;&lt;/span&gt; /project:NorthwindEFModel&lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;The output should be:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;Microsoft (R) EdmGen version 3.5.0.0
Copyright (C) 2008 Microsoft Corporation. All rights reserved.

Loading database information...
warning 6005: The data type &lt;span class="str"&gt;'timestamp(9)'&lt;/span&gt; is not supported, the column &lt;span class="str"&gt;'OrderDate'&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; table &lt;span class="str"&gt;'dbo.Orders'&lt;/span&gt; was excluded.
warning 6005: The data type &lt;span class="str"&gt;'timestamp(3)'&lt;/span&gt; is not supported, the column &lt;span class="str"&gt;'RequiredDate'&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; table &lt;span class="str"&gt;'dbo.Orders'&lt;/span&gt; was excluded.
Writing ssdl file...
Creating conceptual layer from storage layer...
Writing msl file...
Writing csdl file...
Writing object layer file...
Writing views file...

Generation Complete -- 0 errors, 2 warnings&lt;/pre&gt;

&lt;p&gt;9. This will create a bunch of NorthwindEFModel.* files for you.&lt;/p&gt;

&lt;p&gt;10. Open Northwind.ssdl file in a text editor and replace all instances of Schema=&amp;quot;dbo&amp;quot; with empty string (this is needed because tables in the sample Oracle database don't use a schema)&lt;/p&gt;

&lt;p&gt;11. In order to use generated model in the EF Ddesigner, we have to create NorthwindEFModel.edmx file. This can be done manually (just copy/paste contents of individual files into an empty EDMX as indicated by the comments) or by using &lt;a href="http://code.msdn.com/EdmGen2"&gt;EdmGen2 tool from Code Gallery&lt;/a&gt;:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;C:\Path\To\EdmGen2.exe /toedmx NorthwindEFModel.csdl NorthwindEFModel.ssdl NorthwindEFModel.msl&lt;/pre&gt;

&lt;p&gt;12. This will create NorthwindEFModel.edmx, which we can add to the project in VS. &lt;/p&gt;

&lt;p&gt;13. At this point you can now delete the following files generated by EdmGen.exe, which won't be necessary:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;NorthwindEFModel.csdl &lt;/li&gt;

  &lt;li&gt;NorthwindEFModel.ssdl &lt;/li&gt;

  &lt;li&gt;NorthwindEFModel.msl &lt;/li&gt;

  &lt;li&gt;NorthwindEFModel.ObjectLayer.cs &lt;/li&gt;

  &lt;li&gt;NorthwindEFModel.Views.cs &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;PART 3: TESTING GENERATED MODEL&lt;/h2&gt;

&lt;p&gt;14. The only remaining thing to do is to add App.config file with connection string for our Oracle database:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;NorthwindEFModelContext&amp;quot;&lt;/span&gt; 
         &lt;span class="attr"&gt;connectionString&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;provider=EFOracleProvider;
                           metadata=res://*/NorthwindEFModel.csdl|res://*/NorthwindEFModel.ssdl|res://*/NorthwindEFModel.msl;
                           Provider Connection String='data source=XE;user id=edmuser;password=123456'&amp;quot;&lt;/span&gt; 
         &lt;span class="attr"&gt;providerName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Data.EntityClient&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;15. We can now try out our model by running a sample LINQ to Entities query:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (NorthwindEFModelContext context = &lt;span class="kwrd"&gt;new&lt;/span&gt; NorthwindEFModelContext())
{
    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var c &lt;span class="kwrd"&gt;in&lt;/span&gt; context.Customers.Where(c=&amp;gt;c.City == &lt;span class="str"&gt;&amp;quot;Seattle&amp;quot;&lt;/span&gt;))
    {
        Console.WriteLine(c.CompanyName);
    }
}&lt;/pre&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9015021" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jkowalski/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.msdn.com/jkowalski/archive/tags/EFSampleProvider/default.aspx">EFSampleProvider</category><category domain="http://blogs.msdn.com/jkowalski/archive/tags/EFOracleProvider/default.aspx">EFOracleProvider</category></item></channel></rss>