3

列属性を使用して列の名前を変更する必要があることを示唆する同様の質問を見てきましたが、これを行ってもまだエラーが発生します。ここに私のモデルクラスがあります:

public class Task
{
    public int TaskID { get; set; }
    public string TaskDescription { get; set; }
    public bool IsDone { get; set; }

    [Column("Active")]
    public bool _destroy { get; set; }
}
4

1 に答える 1

4

問題は、Entity Framework がエンティティ プロパティ名を (他の文字クラスの中でも) アンダースコア文字で開始できないことです。Reflector を使用して、プロパティ名の検証に使用される正規表現を追跡することができました。それは次のとおりです。

@"[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}][\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}]{0,}"

これは、エンティティ プロパティ名は、次の Unicode 文字クラスから取得した文字でのみ開始できることを意味します。

Ll、Lu、Lt、Lo、Lm、Nl

プロパティ名の残りの文字には、これらのクラスと次のものが含まれる場合があります。

Mn、Mc、Nd、Pc、Cf

下線文字 (U+005F) は Pc クラスにあります。_destroy プロパティの名前を、たとえば destroy に変更することで、エラーを取り除くことができます。文字クラスのリファレンスはこちらにあります

于 2012-06-01T17:20:34.493 に答える