我对实体框架有点陌生,我正在尝试通过实体框架连接到Oracle数据库。 使用 Visual Studio 2015 实体框架向导,我通过对当前数据库进行逆向工程创建了一个数据库。 当我开始调试时出现错误:
类型为"系统.无效操作异常"的未处理异常 发生在实体框架中.dll
其他信息:当模型 正在创建。如果使用上下文,则可能会引发此异常 在 OnModelCreate 方法中,或者如果相同的上下文实例是 由多个线程同时访问。请注意,实例成员 的 DbContext 和相关类不保证是线程安全的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LibraryDLL.DAL;
namespace LibraryDLL
{
public class Class1
{
public void testDB()
{
using (EntitiesDBTest db = new EntitiesDBTest())
{
List<BOOK> books = db.BOOKS.ToList(); // <-- error
List<USER> users = db.USERS.ToList();
List<HISTORY> histories = db.HISTORies.ToList();
}
}
}
}
下面的代码是从模板生成的。
namespace LibraryDLL.DAL
{
using System;
using System.Collections.Generic;
public partial class BOOK
{
public BOOK()
{
this.HISTORies = new HashSet<HISTORY>();
}
public int BOOKID { get; set; }
public string AUTHORFIRSTNAME { get; set; }
public string AUTHORLASTNAME { get; set; }
public string TITLE { get; set; }
public string SHORTDESCRIPTION { get; set; }
public string LONGDESCRIPTION { get; set; }
public virtual ICollection<HISTORY> HISTORies { get; set; }
}
}
我该如何解决它?
检查是否在 App.Config 文件中包含以下配置
<configuration>
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
和
<configuration>
<configSections>
<section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
编辑:
移动这个也是一个好主意
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
向下到配置标记的底部。