13

移行または更新データベースを追加する必要があるたびに EF 4.3.1 移行を使用する場合、StartUpProject パラメーターを使用する必要があります。これをどこかに設定して、これを続ける必要がないようにすることはできますか? データ プロジェクトをスタートアップ プロジェクトとして設定したくありません。それが違いを生む場合、私のコンテキストと移行は異なるプロジェクトにあります。

StartpProject パラメータを使用しない場合にスローされる例外:

update-database -verbose
Using NuGet project 'Data.Deployment'.
Using StartUp project ''.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
   --- End of inner exception stack trace ---
   at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at System.Management.Automation.ComMethod.InvokeMethod(PSMethod method, Object[] arguments)
Exception has been thrown by the target of an invocation.
4

4 に答える 4

11

少なくとも Entity Framework 6 では、スタートアップ プロジェクトを指定するには、-StartUpProjectNameupdate-database でパラメーターを使用します。

update-database -StartUpProjectName <String>

パッケージ マネージャー コンソール内でコマンドを使用して、get-helpコマンドの可能なパラメーターを表示できます。

get-help update-database -detailed
于 2015-03-11T20:11:40.863 に答える
2

これがあなたが話していることであるかどうかはわかりませんが、パッケージマネージャーコンソールのデフォルトプロジェクトを、移行構成が存在するプロジェクトに設定できます。右端のドロップダウンリストです。
このように、私はスタートアッププロジェクトを議論として提供する必要はありませんでした。

于 2012-08-27T08:29:19.900 に答える
1

これを回避する明確な方法は、テスト プロジェクトをソリューションに添付することです。

多くの単体テストを書きたくない場合でも、データ層の名前空間などに適したスタートアップ プロジェクトです。

これにより、起動時の問題がよりクリーンになります。パッケージ マネージャーはソリューション IIRC 全体に適用されます。そのため、デフォルト プロジェクトが migrations フォルダーを含むプロジェクトであることを確認してください。

于 2012-08-30T12:46:08.223 に答える