使用程序包管理器控制台我可以运行类似于以下命令的命令
MyDbContext
该命令会触发位于当前打开的解决方案中的项目My.Project.Data
中定义的My.Project.Data
上的迁移。好。
现在,项目My.Project.Mvc
与项目My.Project.Mvc
位于同一解决方案中。问题是,Core.Project.Data
使用两个db上下文。我们已经介绍过的一个和项目My.Project.Mvc
中定义的另一个 - 这个是作为NuGet包构建的,然后由MySolution
├┬ My.Project.Mvc
│├─ references: My.Project.Data (in the same solution)
│└─ references: Core.Project.Data (NuGet)
└─ My.Project.Data [MyDbContext]
CoreSolution
└─ Core.Project.Data [CoreDbContext]
引用。下图应该清楚说明:
CoreDbContext
问题是,如何从MySolution
的程序包管理器控制台触发Update-Database -ProjectName: Core.Project.Data
的迁移。如果我尝试运行Get-Project : Project 'Core.Project.Data' is not found.
,我会收到错误:
var neighborhoods = [
{lat: 52.511, lng: 13.447},
{lat: 52.549, lng: 13.422},
{lat: 52.497, lng: 13.396},
{lat: 52.517, lng: 13.394}
];
var markers = [];
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: {lat: 52.520, lng: 13.410}
});
}
function drop() {
clearMarkers();
for (var i = 0; i < neighborhoods.length; i++) {
addMarkerWithTimeout(neighborhoods[i], i * 200);
}
}
function addMarkerWithTimeout(position, timeout) {
window.setTimeout(function() {
markers.push(new google.maps.Marker({
position: position,
map: map,
animation: google.maps.Animation.DROP
}));
}, timeout);
}
function clearMarkers() {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers = [];
}
更新:使用migrate.exe不是一种选择。
答案 0 :(得分:1)
来自document更新数据库不支持dll。
您可以从命令行执行EF迁移工具,或者将其添加到VS菜单中以方便使用。
migrate.exe Core.Project.Data.dll /startupConfigurationFile=Core.Project.Data.dll.config
或将/startupConfigurationFile
更改为/connectionString=your-connection-string
答案 1 :(得分:0)
首次由Enable-Migration
启用迁移时,Configuration.cs
文件将添加到项目中。如果Core.Project.Data
存在此文件,请告知实体框架使用此配置:
Update-Database -ConfigurationTypeName Core.Project.Data.Migrations.Configuration -ProjectName Core.Project.Data