我正在尝试自己研究Fluent Migrator,我遇到了一个问题,我需要更改由Fluent迁移器创建的表的结构意味着我使用以下代码创建了一个名为user的表
[Migration(201306041130)]
public class BussinessMigrator : Migration
{
public override void Up()
{
Create.Table("user")
.WithColumn("id").AsInt32().PrimaryKey().NotNullable().Identity()
.WithColumn("name").AsString().NotNullable()
.WithColumn("email_id").AsString().NotNullable()
.WithColumn("phone").AsInt32().NotNullable()
.WithColumn("address").AsString().NotNullable()
.WithColumn("company_id").AsInt32().NotNullable();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我需要在列名后添加3个名为avatar_name,avatar_type,avatar_data的coloums,我该怎么做才能回答一个例子
提前致谢
是否有任何代码生成模板可用于FluentMigrator从SQL(T-SQL)语句生成迁移类?
理想情况下,我希望获取包含用于创建表,索引等的语句的文本,并使用包含等效原始SQL语句的Up和Down方法生成迁移类.
我只关心基于开源或免费代码生成工具的解决方案.
我遇到了这个问题 - 当我运行 MSBuild 任务来执行迁移时,它会抛出一个错误:
执行迁移时遇到以下错误:路径中存在非法字符。
删除了我昨天添加的最后一个迁移 - 同样的问题。
我使用的版本是 NuGet 的 1.1.0。
我在 .Net Core 3.1 中有一个使用 SQL Server DB 的应用程序,其中有一个 SQL 表达式,我想将其“转换”为流畅的迁移器表达式,但我不确定如何执行此操作。
CREATE NONCLUSTERED INDEX [nci_wi_XXXXXX] ON [dbo].[MyTable]
([MyColumn1], [MyColumn2]) INCLUDE ([MyColumn3], [MyColumn4], [MyColumn5],
[MyColumn6], [MyColumn7], [MyColumn8], [MyColumn9]) WITH (ONLINE = ON)
Run Code Online (Sandbox Code Playgroud)
我想用与此类似的表达式来表达它:
Create.Index("nci_wi_XXXXXX")
.OnTable("MyTable")
.OnColumn("MyColumn1").Unique()
.OnColumn("MyColumn2").Unique()
.WithOptions().NonClustered()......
Run Code Online (Sandbox Code Playgroud)
但我不确定在创建索引时如何添加“包含的列”。我怎样才能做到这一点?
提前致谢。
如何让MSBuild任务使用外部xml参数文件中的参数?
示例:使用外部xml文件中的"MyConnectionStringParameter"作为MSBuild任务.
MSBuild文件:
<?xml version="1.0"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Migrate">
<UsingTask TaskName="FluentMigrator.MSBuild.Migrate"
AssemblyFile="../bin/FluentMigrator.MSBuild.dll"/>
<PropertyGroup>
<TargetPath>../bin/Target.dll</TargetPath>
</PropertyGroup>
<Target Name="Migrate" >
<Message Text="Starting FluentMigrator Migration"/>
<Migrate Database="sqlserver2008"
Connection="$(MyConnectionStringParameter)"
Target="$(TargetPath)"
Verbose="True"
Output="True"
OutputFilename="generated.sql">
</Migrate>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
参数文件:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="MyConnectionStringParameter" value="ParameterValue" />
</parameters>
Run Code Online (Sandbox Code Playgroud) 在流利的迁移器上,根据文档,这是一个有关如何在.net核心上运行迁移的示例:
using System;
using System.Linq;
using FluentMigrator.Runner;
using FluentMigrator.Runner.Initialization;
using Microsoft.Extensions.DependencyInjection;
namespace test
{
class Program
{
static void Main(string[] args)
{
var serviceProvider = CreateServices();
// Put the database update into a scope to ensure
// that all resources will be disposed.
using (var scope = serviceProvider.CreateScope())
{
UpdateDatabase(scope.ServiceProvider);
}
}
/// <summary>
/// Configure the dependency injection services
/// </sumamry>
private static IServiceProvider CreateServices()
{
return new ServiceCollection()
// Add common FluentMigrator services
.AddFluentMigratorCore()
.ConfigureRunner(rb => rb
// …Run Code Online (Sandbox Code Playgroud)