1

我将很快开始一个 ASP.NET MVC 4 项目,其中 Entity Framework 作为我的 ORM,Oracle 作为我的数据库引擎。

我知道,为了让 EF 与 Oracle 一起工作,必须在 Oracle 中手动创建表,并将实体逐列映射到表中。

问题是我的应用程序有身份验证和授权需求,我想知道让 .NET 成员资格与我的场景一起工作的最简单方法是什么。

我找到了这篇文章,但它使用了我认为昂贵的第三方软件。

4

1 回答 1

2

我正在使用Oracle Developer Tools for .NET (ODT),它提供了很大的帮助。最好的部分:它是免费的!ODT 包括 ODP.NET,将帮助您执行以下操作:

  • 自动设置 ASP.NET 成员表。您需要先创建架构,然后运行提供的脚本。
  • 自动创建和映射 EF 实体(首先使用数据库);您无需手动将表映射到表。

需要考虑的一些事项... 我的会员模式与用于我的应用程序的模式是分开的。通过这种方式,我可以将一个成员模式用于可能依赖于不同数据库(模式/用户)的多个应用程序。

配置 web.config 时,请务必将应用程序名称从“/”更改为有意义的名称。几个配置元素引用了应用程序名称,因此请务必更改所有内容。成员资格提供者将自动在 membersip 数据库模式中创建应用程序记录。

在创建了您的成员资格架构后(使用脚本),您需要将 web.config 文件的成员资格、配置文件和角色管理器元素更改为如下内容:

<membership defaultProvider="OracleMembershipProvider">
  <providers>
    <clear />
    <add name="OracleMembershipProvider" type="Oracle.Web.Security.OracleMembershipProvider, Oracle.Web, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConnectionString" applicationName="YOUR_APP_NAME" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
  </providers>
</membership>
<profile>
  <providers>
    <clear />
    <add name="OracleProfileProvider" type="Oracle.Web.Profile.OracleProfileProvider, Oracle.Web, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConnectionString" applicationName="YOUR_APP_NAME" />
  </providers>
</profile>
<roleManager enabled="true" defaultProvider="OracleRoleProvider">
  <providers>
    <clear />
    <add connectionStringName="OraAspNetConnectionString" applicationName="YOUR_APP_NAME" name="OracleRoleProvider" type="Oracle.Web.Security.OracleRoleProvider, Oracle.Web, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </providers>
</roleManager>

这个链接也可能有帮助

希望这可以帮助。

于 2013-09-25T15:47:52.873 回答