namespace Layers
{
public class DatabaseLayer
{
private Database _database;
public string ConnectionString {get; set; }
}
}
namespace Models
{
public class DatabaseBase : DbContext, IDisposable
{
private DbConnection _connection;
private DbCommand _command;
public string ConnectionString {get; set; }
}
public class Database : DatabaseBase
{
internal Database(string connectionString) : base(connectionString) { }
public virtual DbSet<FileEntity> Files { get; set; }
}
}
IDesignTimeDbContextFactory
无法创建“Database”类型的对象。将“IDesignTimeDbContextFactory”的实现添加到项目中
:
namespace Models
{
public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<Database>
{
public Database CreateDbContext(string[] args)
{
var builder = new DbContextOptionsBuilder<Database>();
var connectionString = @"Server=MyInstanceName;Database=MyDatabaseName;Trusted_Connection=True;";
builder.UseSqlServer(connectionString, b => b.MigrationsAssembly("MyAssemblyName"));
return new Database(builder.Options.ToString());
}
}
}
当我想跑的时候
update-database -Context Database
System.ArgumentException异常:
初始化字符串的格式不
从索引0开始符合规范。
在
connectionString,Int32 currentPosition,StringBuilder缓冲区,布尔值
2
parsetable, String connectionString, Boolean buildChain, Dictionary
2
同义词,Boolean firstKey)在
系统数据通用.DbConnectionOptions..ctor(字符串连接字符串,
词典`2同义词)
connectionString
,但我照旧从测试项目中复制了它,它在那里工作得很好(连接测试通过了)。
编辑
我在调试器下运行代码,发现有错误的连接字符串发送到
Database
施工单位:
所选行包含正确的连接字符串和下一行-否。所以我的问题应该是如何从发送连接字符串
DbContextOptionsBuilder
DbContext
构造函数正确。
编辑2:
return new Database(builder.Options.ToString());
具有
return new Database((builder.Options.Extensions.First() as
SqlServerOptionsExtension).ConnectionString.ToString());
CreateDbContext
但我不确定这是不是一个合适的方法。。。