在我的解决方案中,我有一些数据库合约项目,它存储上下文的接口和一些项目,用于具体的Ef上下文,如下所示:
public interface ISampleContext
{
IDbSet<User> Users { get; set; }
IDbSet<Session> Sessions{ get; set; }
}
public class SampleContext : DbContext, ISampleContext
{
IDbSet<User> Users { get; set; }
IDbSet<Session> Sessions { get; set; }
SampleContext() : base("name=EfDefaultConnectionString"){ ... }
SampleContext(string connectionString) : base(connectionString){ ... }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { ... }
}
我通过以下模式运行命令进行迁移(启用,添加,更新等):
Add-Migration
-Name MigrationName
-ProjectName EfProjectName
-StartUpProjectName EfProjectName
-ConfigurationTypeName EfProjectName
-ConnectionStringName SomeConnectionStringName
但是在运行命令后,Ef迁移失败。对于解决问题,我应该评论接口和: base("name=EfDefaultConnectionString")
。最后,在创建迁移后取消注释代码。
我的问题是为什么当提供连接字符串名称时,包管理器控制台没有调用SampleContext(string connectionString)
构造函数而我得到以下异常?
没有名为&#39; EfDefaultConnectionString&#39;的连接字符串可以在应用程序配置文件中找到。
第二个问题是我可以在包管理器控制台中控制运行命令的流程吗?
最后一个问题与此问题并不完全相关,但我现在需要有什么办法在&#34; EntityFramework.dll&#34;和&#34; EntityFramework.SqlServer.dll&#34; &#34;复制本地&#34;是假的?