使用FluentMigrator,使用.AsString()
默認創建Column
會導致nvarchar(255)
。有沒有簡單的方法(在我修改FluentMigrator代碼之前)創建一個類型爲nvarchar(MAX)
的列?我可以使用FluentMigrator創建一個nvarchar(MAX)列嗎?
41
A
回答
55
您可以創建一個擴展方法中.AsMaxString()
包裹.AsString(Int32.MaxValue)例如
internal static class MigratorExtensions
{
public static ICreateTableColumnOptionOrWithColumnSyntax AsMaxString(this ICreateTableColumnAsTypeSyntax createTableColumnAsTypeSyntax)
{
return createTableColumnAsTypeSyntax.AsString(int.MaxValue);
}
}
20
好的,我找到了。基本上,使用.AsString(Int32.MaxValue)。可惜有沒有一個.AsMaxString()方法,但我想它很容易就擺在...
4
如果您經常創建具有相同設置或列組的列/表,您應該爲您的遷移創建擴展方法!
例如,我的表的幾乎每個人都有CreatedAt和UpdatedAt日期時間列,所以我掀起了一個小擴展方法,所以我可以說:
Create.Table("Foos").
WithColumn("a").
WithTimestamps();
我認爲我創建的擴展方法正確...我知道它的工作原理,但FluentMigrator具有的接口LOT ...這裏是:
public static class MigrationExtensions {
public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) {
return root.
WithColumn("CreatedAt").AsDateTime().NotNullable().
WithColumn("UpdatedAt").AsDateTime().NotNullable();
}
}
同樣,幾乎每一個我的表有一個int主鍵叫'Id',所以我想我會加來爲我加上那個Id。不確定...我今天剛剛開始使用FluentMigrator,但您應該始終在可能的情況下重構!
注:如果你做幫手/擴展方法爲你的遷移,你應該永遠永遠不斷改變什麼這些方法做。如果你這樣做,有人可以嘗試運行你的遷移,並且事情可能會爆炸,因爲你用來創建遷移#1的幫助器方法現在的工作方式與之前的不同。
以下是創建列櫃面它可以幫助你的代碼創建的helper方法:https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs
15
您可以使用AsCustom("nvarchar(max)")
和它馱擴展
相關問題
- 1. 可以使用srv_paramsetoutput()來設置nvarchar(max)或varchar(max)嗎?
- 2. 我可以使用值列表創建一個ipywidget floatslider嗎?
- 3. 我們可以使用PostgreSQL數據庫創建一個字符變量列(MAX)
- 4. 我可以用圖像列表創建一個JFrame嗎?
- 5. 我可以使用acts_as_list在一列中創建多個列表嗎?
- 6. 是否可以使用FluentMigrator創建觸發器?
- 7. 我可以使用TypeInfo_Struct創建一個結構嗎?
- 8. 我可以使用multile lex文件創建一個pdf嗎?
- 9. 我們可以使用php創建一個單詞模板嗎?
- 10. 如何在C#中創建NVarchar(max)SqlParameter?
- 11. Python - 我可以創建一個創建唯一列表的函數嗎?
- 12. 我可以創建一個列表模型到數組中嗎?
- 13. 如果hibernate可以生成db schema,如何告訴它創建一個nvarchar(max)列?
- 14. 創建後,我可以創建一個X11窗口OpenGL嗎?
- 15. 添加一個nvarchar(MAX)列到我的審計表
- 16. 關於使用NVARCHAR(MAX)
- 17. 如何使用Nvarchar(max)參數創建CLR存儲過程?
- 18. 我可以用用戶輸入創建一個t4文件嗎?
- 19. 我可以使用多個控件創建單個VB6 OCX嗎?
- 20. 無法創建使用NVARCHAR(最大值)我使用<code>NVARCHAR(MAX)</code>創建動態query.Since <code>NVARCHAR</code>完整動態查詢
- 21. 我可以用Python創建一個firefox插件嗎?
- 22. 我可以用python創建一個擴展名嗎?
- 23. c#我可以用streamwriter創建一個動態文件名嗎?
- 24. 我們可以用HashMap的方法創建一個實例嗎
- 25. 我們可以用Generic創建一個Dictionary嗎?
- 26. 我可以創建一個引用不同源的NuGet包嗎?
- 27. OrientDB我可以用java API創建一個「集羣」嗎?
- 28. 我可以用$動態創建一個類嗎? (美元符號)
- 29. 我可以用Qt API創建一個.MP4容器嗎?
- 30. 我可以創建一個asp.net網站並用wordpress託管嗎?