c# - WebApi 2 不使用域模型 Dbcontext 连接字符串

标签 c# mysql .net entity-framework asp.net-web-api

我使用 n 层架构,所以现在我有 2 个项目域和服务(WebApi2)

enter image description here

  • 我正在为我的项目使用 MySql
  • 我已经为 EF 实现了自己的身份用户和 MySqlConfiguration
  • 我已经运行了 update-database 并正确地更新了它

enter image description here

  • 但是当我在我的服务中使用它时,我的连接字符串是 Data Source=.\SQLEXPRESS;Initial Catalog=DefaultConnection;Integrated Security=True;MultipleActiveResultSets=True

来自域的我的 App.config

<connectionStrings>
    <add name="DefaultConnection" connectionString="server=localhost;user id=root;password=admin123;persistsecurityinfo=True;database=GD" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<entityFramework>
    <providers>
        <provider invariantName="MySql.Data.MySqlClient"
          type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity"/>
    </providers>
</entityFramework>
<system.data>
    <DbProviderFactories>
        <remove invariant="MySql.Data.MySqlClient"></remove>
        <add name="MySQL Data Provider"
          invariant="MySql.Data.MySqlClient"
          description=".Net Framework Data Provider for MySQL"
          type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0"/>
    </DbProviderFactories>
</system.data>

在 Startup.Auth.cs 中,我添加了 User 和

的自定义实现

UserManagerFactory = () => new UserManager<User>(new UserRepository());

UserRepository 正在使用我的实体

 public UserRepository()
    {
        _entities = new Entities();
    }

实体.cs:

public class Entities : DbContext
{
    static Entities() 
    {
        Database.SetInitializer(new MySqlInitializer());
    }

    public Entities() : base("DefaultConnection") { }

    public DbSet<User> IdentityUsers { get; set; } 
    public DbSet<Role> IdentityRoles { get; set; }
    public DbSet<IdentityUserClaim> IdentityUserClaims { get; set; }
    public DbSet<IdentityUserLogin> IdentityUserLogins { get; set; }
    public DbSet<IdentityUserRole> IdentityUserRoles { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<IdentityUserLogin>().HasKey(u => u.UserId);
        modelBuilder.Entity<IdentityUserRole>().HasKey(u => u.RoleId);
        modelBuilder.Entity<IdentityUserRole>().HasKey(u => u.UserId);
        base.OnModelCreating(modelBuilder);
    }
}

问:如何让项目服务使用域连接字符串?

最佳答案

当您的项目运行时,唯一使用的配置文件是启动项目(在您的情况下为 Web API 项目)中的配置文件。因此,您需要在其 web.config 文件中使用连接字符串。

注意:如果您有测试 Web API 的测试项目,那么这将是启动项目,您需要将连接字符串添加到该项目的配置文件中。如果不是,测试运行器将找不到它,测试将失败

关于c# - WebApi 2 不使用域模型 Dbcontext 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056320/

相关文章:

c# - Windows Service下进程截图

c# - 如何创建用户类并注册新用户?

c# - ASP Crystal Report 报表没有表格

MySQL LEFT JOIN json 字段与表中的另一个 id

mysql - 为什么doctrine2不支持GROUP_CONCAT()、DATE_FORMAT()?

MySql 事件不起作用

c# - 如何在 WinForms 应用程序的 Windows 安装程序期间获取用户输入?

.net - 无法将 MySQL 日期/时间值转换为 System.DateTime

c# - SQLParameter 无法正常工作

c# - 事务中的 EF 更新窗体 View