如何在引用的程序集(NuGet包)中的DbContext上触发Update-Database

时间:2016-07-18 11:50:34

标签: c# entity-framework entity-framework-6 dbcontext

使用程序包管理器控制台我可以运行类似于以下命令的命令

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不是一种选择。

2 个答案:

答案 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