1

FluentNHibernate は初めてです。AutoMapping を使用しています。たとえば、NHibernate によって生成されたデータベースがあるとします。2列のドキュメントという名前のテーブルがあります

  • ID: 整数
  • 説明: nvarchar(255)

このクラスにマップされている

public class Document
{
    public virtual int Id { get; set; }
    public virtual string Description{ get; set; }
}

データベースの説明のデータ型を nvarchar(255) からテキストに変更したいので、次のようなコンソール アプリケーションを作成しました。

public class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Start process");           

        AutoMap.AssemblyOf<Document>().Override<Document>(y => y.Map(x => x.Description).CustomSqlType("text"));         

        Console.WriteLine("End process");
    }
}

エラーはありませんが、何も起こりませんでした。列の説明はまだ nvarchar(255) です。ここで何が欠けているのかわかりません。どんな考えでも大歓迎です!ありがとう

4

1 に答える 1

0

SchemaUpdate は列を変更することはできず、追加するだけです。ただし、再作成 (ドロップして作成) することはできます。また、テキスト フィールドの長さを特定のしきい値 (多くの場合 8k) を超えて設定すると、ほとんどのドライバーは "varchar" ではなく "text" に相当するものを作成します。

var config = Fluently.Configure()
    .Database(...)
    .Mappings(m => m.Automapping.Add(AutoMap.AssemblyOf<Document>().Override<Document>(y => y.Map(x => x.Description).Length(20000)))
    .BuildConfiguration();

new SchemaExport(config).Create(true, true);
于 2012-09-19T13:12:59.083 に答える