Настройка приложения ASP.NET MVC 4 с базой данных Oracle

В настоящее время я работаю над проектом ASP.NET MVC 4 с базой данных Oracle. Я успешно добавил строку подключения в свой файл Web.config, как здесь:

<add name="OracleDBConnString" connectionString="Provider=MSDAORA;Data Source=ISDQA;User ID=isd;Password=isdqa;" providerName="System.Data.OleDB" />

Но когда я создаю новый проект, он уже имеет встроенные классы проверки подлинности. Как я могу изменить эти классы раз и навсегда? Я хочу изменить значение по умолчанию ConnString.

Здесь моя модель:

public class UsersContext : DbContext
{
    public UsersContext()
        : base("OracleDBConnString")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

Здесь мой Пользовательский контроллер:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
    //I WANT TO MODIFY THIS PART
    if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) 
    {

        return RedirectToLocal(returnUrl);
    }

    // If we got this far, something failed, redisplay form
    ModelState.AddModelError("", "The user name or password provided is incorrect.");
    return View(model);
}

UPDATE

Когда я меняю base("DefaultConnection") на base("OracleDBConnString"), я получил эту ошибку:

Server Error in '/' Application.

A null was returned after calling the 'get_ProviderFactory' method on a store provider instance of type 'System.Data.OleDb.OleDbConnection'. The store provider might not be functioning correctly.

Обратите внимание, что я уже добавил using System.Data.OleDb; в мои приложения.

Ответ 1

Вместо создания специального класса вы можете настроить в web.config поставщика членства, который вы используете.

Для Oracle существует класс OracleMembershipProvider, который можно найти здесь . Для MySQL вы можете использовать MySQLMembershipProvider. Есть хорошая статья, как вы можете ее настроить: Как настроить и настроить MySql Memberhip Provider

Кроме того, вы можете использовать Entity Framework Code First Membership Provider и использовать надлежащего поставщика (смотрите в этой статье: Entity Framework Code-Первая поддержка для Oracle, MySQL, PostgreSQL и SQLite). Я не пробовал это решение, но он выглядит многообещающим.

Если ничего выше не помогает, вы можете написать свой собственный провайдер Memebership, но я уверен, что вы можете найти то, что уже существует.

Подводя итог: вместо изменения типа подключения, измените членский провайдер, который будет определен для ваших нужд. Ваш код не должен замечать изменения, поскольку каждый поставщик членства наследует базу MemebershipProivder class

Ответ 2

Asp.Net SimpleMembership и членство в Asp.Net - разные звери, я боюсь. Шаблоны ASP.NET MVC4 используют SimpleMembership (WebSecurity.Login).

См. мой ответ о использовании провайдера членства MySql в Asp.Net MVC4 здесь. Простое изменение строки подключения или других вещей вам не поможет. Вам нужно найти SimpleShiphip Oracle Asp.Net или написать свой собственный.