我使用 n 层架构,所以现在我有 2 个项目域和服务(WebApi2)
- 我正在为我的项目使用 MySql
- 我已经为 EF 实现了自己的身份用户和 MySqlConfiguration
- 我已经运行了 update-database 并正确地更新了它
- 但是当我在我的服务中使用它时,我的连接字符串是
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/