我正在为我的Web应用程序使用n层架构,而DbContext类就在这里
public class Db:DbContext
{
public Db()
: base("DbConnectionString")
{
Database.SetInitializer<Db>(null);
}
public class DbInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<Db>
{
protected override void Seed(Db context)
{
}
}
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasMany(r => r.Roles).WithMany(o => o.Users).Map(f =>
{
f.MapLeftKey("UserId");
f.MapRightKey("RoleId");
});
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
我的app.config文件在这里
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DbConnectionString" connectionString="Server=xx.xxx.xx.xxx;Database=gonulluh_first;User Id=*******;Password=*******;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<contexts>
<context type="Data.Db, Data">
<databaseInitializer type="DbInitializer, Data" />
</context>
</contexts>
<defaultConnectionFactory type="Data.DbContextFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
当我使用&#34; update-database -verbose&#34;在程序包管理器控制台中将命令迁移到本地数据库。
Using StartUp project 'Web'.
Using NuGet project 'Data'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'DbConnectionString' (DataSource: (localdb)\v11.0, Provider: System.Data.SqlClient, Origin: Convention).
No pending explicit migrations.
Running Seed method.
你知道为什么我无法更新远程数据库吗?
答案 0 :(得分:0)
鉴于你提到了n-tier,我假设你的配置文件在另一个程序集中而不是上下文(Update-Database
不会接受)。
如果您需要定位其他服务器,请尝试将-ConnectionString
参数指定为Update-Database
。 e.g。
Update-Database -ConnectionString "Server=xx.xxx.xx.xxx;Database=gonulluh_first;User Id=*******;Password=*******;MultipleActiveResultSets=true;" -Verbose
它可能会提示您提供商,只需提供System.Data.SqlClient
。
答案 1 :(得分:0)
感谢您的回答,但这并没有解决我的问题。
我正在使用下面的n层p>
- 核心 - 数据 --Infra - 服务 --web
所有问题都在我的Web项目中的web.config文件中。我已将其配置如下,问题解决了。
<entityFramework>
<contexts>
<context type="Data.Db, Data">
<databaseInitializer type="Data.DbInitializer, Data" />
</context>
</contexts>
<defaultConnectionFactory type="Data.DbContextFactory, Data">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>