1

私の質問に対する答えは非常に明白なはずですが、見つけることができません。1 つのテーブルを持つ edmx ファイルがあります。type のフィールドがありますstring。EFは常にそのためにnvarcharを生成しますが(これは一種の予想です)、4000は私には小さすぎるため、そのフィールドの代わりにが必要です。ntextnvarchar

教えてください - EFにntextフィールドを生成するように指示する適切な方法は何ですか?

PS Entity Framework 4、SQL CE 3.5 を使用

4

3 に答える 3

3

最初にモデルを使っていると思いますよね?SQL DDL生成用のカスタムT4テンプレートを作成しNTEXT、フィールドが最大サイズで定義されている場合に使用するロジックを含めることができます。

デフォルトのテンプレートはオンです:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen\SSDLToSQL10.tt

このテンプレートをコピーして、データ型が作成されるロジックを見つけてください。テンプレートを作成したら、モデルプロパティ(デザイナ内)のDDL生成テンプレートを変更したバージョンに変更します。

モデル(XML)に注釈を追加し、SQL生成プロセスのカスタムロジックに使用できるため、生成テンプレートでできることは他にもたくさんあります。

于 2011-05-27T10:39:20.017 に答える
1

Designer でプロパティ「MaxLength」を「Max」に設定するだけです。これにより、SQL CE DB に ntext フィールドが生成されます。

于 2013-08-22T15:33:30.687 に答える
0

プロジェクトにADO.Netエンティティデータモデル()が含まれている場合は、Ladislavの優れた回答.edmxを参照してください。

ただし、Code Firstライブラリを使用していて、プロジェクトにが含まれていない場合は、.edmxを使用しSystem.ComponentModel.DataAnnotations.ColumnAttributeて列タイプを指定できます。

using System.ComponentModel.DataAnnotations;

public class Note {

    [Column("Note", TypeName="ntext")]
    public string Note { get; set; }

}
于 2012-03-22T12:26:17.587 に答える