Entity Frameworkのコードファースト機能を使用していますが、列データ型を指定する方法を理解しようとしていますデータベースが自動生成されたときに作成される必要があります。プロパティでnvarchar(4000)ではなくTEXT列を生成するように指定する方法
私は単純なモデルがあります:私は自分のアプリケーションを実行すると
public class Article
{
public int ArticleID { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public string Summary { get; set; }
public string SummaryHtml { get; set; }
public string Body { get; set; }
public string BodyHtml { get; set; }
public string Slug { get; set; }
public DateTime Published { get; set; }
public DateTime Updated { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
、SQL CE 4.0データベースは自動的に次のスキーマを使用して作成されています。これまでのところ
、とても良いです!しかし、Body
とBodyHtml
のプロパティに挿入するデータは、NVarChar
の列タイプの最大許容長よりも大きくなります。したがって、これらのプロパティに対しては、EFでText
カラムを生成します。
しかし、私はこれを行う方法を見つけることができないようです!グーグルと読み出しのかなり後、私は、this answerに見出される情報から、DataAnnotations
を用いてカラムタイプを指定しようとした:
using System.ComponentModel.DataAnnotations;
...
[Column(TypeName = "Text")]
public string Body { get; set; }
データベースが削除され、アプリケーションが再実行されているときに、次の例外を(スロー):
Schema specified is not valid. Errors: (12,6) : error 0040: The Type text is not qualified with a namespace or alias. Only PrimitiveTypes can be used without qualification.
しかし、私は、私が指定されなければならない、と私は私に言うだろう何かを見つけることができませんでしたどのような名前空間またはエイリアス見当がつかない。
私もthis referenceごとに注釈を変更してみました:
using System.Data.Linq.Mapping;
...
[Column(DbType = "Text")]
public string Body { get; set; }
をこの場合、データベースが作成ですが、Body
列はまだNVarChar(4000)
あるので、注釈が無視されるようです。
誰でも手助けできますか?これはかなり一般的な要件であるはずですが、私の検索は無駄でした!
CEはテキストをサポートしていますか?データ型リストを見ると、ntextは見ることができますが、テキストは見ることができません。 –
@Damien、ありがとうございます - これを回答として追加してください(データタイプリストへのリンクを追加してください)、私はそれを受け入れます。 –
データ型のオンラインリストが見つかりませんでした。確認するためにCE BOLをダウンロードしなければなりませんでした。 Kristof Claesが同じ地面をカバーする答えを加えたようです。 –