2017-02-12 51 views
1

我最近將我的EF7項目從DotNet Core 1.0.0遷移到了版本1.1.0,現在我在創建數據庫遷移時遇到了問題。EF7遷移生成器忽略上下文參數

在我的項目中,我有多個上下文,工具dotnet-ef提供了一個命令行參數來區分這些上下文,以便爲每個上下文創建單獨的遷移。

當我試圖創建上下文「AuditLogContext」的遷移與命令

dotnet ef migrations add Initial --context 'Some.Namespace.AuditLogContext' --output-dir './Migrations/AuditLogMigrations' 

再失敗的話,告訴我

名「初始」是由現有的遷移。

當我試圖建立與另一名移民,說Initial2,遷移創建但是錯誤的情況下獲得。

在文件夾

./Migrations/AuditLogMigrations

是命名爲新的文件

20170212122451_Initial2.cs

20170212122451_Initial2.Designer.cs

CoreContextModelSnapshot.cs

我期待文件AuditLogContextModelSnapshot.cs代替。

以前有人解決過這個問題嗎?

回答

0

我找到了這個問題的原因。

我在我的項目中有多個上下文,每個上下文都需要參數。所以遷移建設者期望每個上下文都有一個工廠。

在我的例子中,一個類實現了所有的工廠,現在有一個錯誤,接口的具體順序被用來確定創建哪些遷移。

public class Program : IDbContextFactory<CoreContext>, IDbContextFactory<AuditLogContext>, IDbContextFactory<LockContext> 

這個片段將創建遷移爲CoreContext

public class Program : IDbContextFactory<AuditLogContext>, IDbContextFactory<CoreContext>,IDbContextFactory<LockContext> 

和片段將創建AuditLogContext遷移。

這有點煩人,但如果你知道如何創建遷移沒關係。