我正在尝试在 MVC 应用程序中使用 Entity Framework v6 使用 Oracle Data Provider.NET (ODP.NET) 连接到 Oracle。
我从这里安装了 ODP.NET:https://www.nuget.org/packages/odp.net.entityframework/6.121.1-beta
我的 web.config 文件配置如下:
<connectionStrings>
<add name="MyDB" connectionString="User ID=MyUser;Password=MyPassword;Data Source=MyDatabase; Persist Security Info=False" providerName="Oracle.ManagedDataAccess" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用 EF Context 时,出现以下错误:
实体框架提供程序类型“Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices、Oracle.ManagedDataAccess.EntityFramework、Version=6.121.1.0、Culture=neutral、PublicKeyToken=89b483f429c47342”在具有不变名称的 ADO.NET 提供程序的应用程序配置文件中注册无法加载 Oracle.ManagedDataAccess.EntityFramework'。确保使用程序集限定名称并且该程序集可供运行的应用程序使用
我花了很多时间寻求这方面的帮助。将非常感谢任何帮助!
谢谢!
马丁
我有一个名为“JobTitle”的 EF 实体类型,它有一个名为“Offices”的导航属性(它是另一个名为“Office”的实体类型的集合)。
我想在索引视图中显示 JobTitle 名称和相关 Office 名称的列表。View 脚手架默认生成了以下内容:
@model IEnumerable<Example.Models.JobTitle>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.JobTitleName)
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.JobTitleName)
</td>
</tr>
}
</table>
Run Code Online (Sandbox Code Playgroud)
我的控制器代码(默认情况下)如下所示:
// GET: /JobTitle/
public ActionResult Index()
{
return View(db.JobTitles.ToList());
}
Run Code Online (Sandbox Code Playgroud)
这将使我能够生成属于“JobTitle”的所有简单属性(例如“JobTitleName”)。但是,我无法弄清楚如何从“Offices”集合(导航属性)中检索相应的“Office”信息到我的视图中。
因此,我希望最终显示两列:“JobTitle”和“Office”。
(在我的数据库中,这些实体由三个表表示:JobTitle (JobTitleID,JobTitleName)、Office (OfficeID,OfficeName) 和 JobTitleOffice (JobTitleID,OfficeID))
我对 MVC 和实体框架完全陌生,因此非常感谢您的帮助。
谢谢!