【问题标题】:Oracle.DataAccess.EntityFramework, Version=6.121.2.0 The located assembly's manifest definition does not match the assembly referenceOracle.DataAccess.EntityFramework, Version=6.121.2.0 定位的程序集的清单定义与程序集引用不匹配
【发布时间】:2015-01-29 17:13:16
【问题描述】:

我已经安装了 ODAC 12c R3 Beta2、VS2013 Update 4、.net 4.5.2 和 Entity Framework 6.1.2 Beta 来测试 Oracle 数据库的 EF6 代码优先特性。但是出现了错误,不知道怎么办。

无法加载文件或程序集“Oracle.DataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) 在 var db = new BloggingContext() 行上。

这是我运行的一段代码和我使用的 app.config。

static void Main(string[] args)
        {
            using (var db = new BloggingContext())
            {
                // Create and save a new Blog 
                Console.Write("Enter a name for a new Blog: ");
                var name = Console.ReadLine();

                var blog = new Blog { Name = name };
                db.Blogs.Add(blog);
                db.SaveChanges();

                // Display all Blogs from the database 
                var query = from b in db.Blogs
                            orderby b.Name
                            select b;

                Console.WriteLine("All blogs in the database:");
                foreach (var item in query)
                {
                    Console.WriteLine(item.Name);
                }

                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            } 
        }

        public class Blog
        {
            public int BlogId { get; set; }
            public string Name { get; set; }

            public virtual List<Post> Posts { get; set; }
        }

        public class Post
        {
            public int PostId { get; set; }
            public string Title { get; set; }
            public string Content { get; set; }

            public int BlogId { get; set; }
            public virtual Blog Blog { get; set; }
        }

        public class BloggingContext : DbContext
        {
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
        } 

<connectionStrings>
    <add name="Default" providerName="Oracle.DataAccess.Client" connectionString="User Id=_________;Password=__________;Data Source=_________" />
  </connectionStrings>

<entityFramework>
    <defaultConnectionFactory type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess"></defaultConnectionFactory>
    <providers>
      <provider invariantName="Oracle.DataAccess.Client" type="Oracle.DataAccess.EntityFramework.EFOracleProviderServices, Oracle.DataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
  </entityFramework>

【问题讨论】:

    标签: c# .net oracle entity-framework


    【解决方案1】:

    我遇到了同样的问题,我是这样解决的: 首先卸载任何为您提供任何 Oracle 提供程序的 nuget 数据包,您将不需要它们。然后右键单击解决方案中的“引用”,然后单击“添加引用...”并添加这两个:

    Path_to_ODAC_installation\product\12.1.0\client_1\odp.net\managed\common\Oracle.ManagedDataAccess.dll Path_to_ODAC_installation\product\12.1.0\client_1\odp.net\managed\common\EF6\Oracle.ManagedDataAccess.EntityFramework.dll

    (我认为你应该在这里清理和重建)

    然后在你的 web.config 中使用它作为提供者

    <providers>
    <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
    

    并注释掉您的“默认”连接字符串。 最后但同样重要的是,进入您的 Path_to_ODAC_installation\12.1.0\client_1\Network\Admin\tnsnames.ora 并检查它是否具有正确的连接参数。

    最后回到Visual Studio,右键Models,“Add”,“New Item”,“Data”,“ADO.Net Entity Data Model”,“Code First from Database”。在这里使用您的用户名和密码创建一个新连接以访问 Oracle 数据库,连接类型 =>“TNS”并使用您在前一步修改的 tns。测试您的连接并保存(“是的,在连接字符串中包含敏感数据”)。

    在这里,我假设您将连接字符串命名为“Model1”。所以,在你声明 BloggingContext 的地方,使用这个构造函数

    public BloggingContext():base("Model1")
    {
    }
    

    【讨论】:

    • 将“Version=6.121.2.0”更改为“Version=6.121.1.0”并完成:p
    猜你喜欢
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2018-10-13
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多