2

私は、EF Code First を使用してプロジェクトを正常に実行しています。しかし今、DBにもう1つのフィールドを追加する必要があります(たとえば、DateTime型のCreateDate)。これはnullになる可能性があります。

そこで、DB(CreateDate (datetime) null ) にもう 1 つのフィールドを追加するスクリプトを作成し、新しいフィールドを含めるようにモデルを変更しました。

public class Account()
{
...
public DateTime CreateDate { get; set; }
}

以下は、FluentApi を使用してこのフィールド オプションを作成するコードです。

Property(x => x.CreateDate).IsOptional();

問題は、アカウントのインスタンスを取得しようとしたときに、次のようにフィールドを変更するとエラーが発生したことです。

public DateTime? CreateDate { get; set; }

それは動作します。

これについて私に説明してもらえますか?流暢な API が機能しないのはなぜですか、または何か間違ったことをしたのですか?

ありがとうございました。

4

2 に答える 2

4

あなたはすでにあなたの質問で解決策を提供しています... :) 新しいプロパティを次のように宣言する必要があります。

public DateTime? CreateDate { get; set; }

DateTime?null 許容型であり、null になる可能性があることを意味しCreateDateます。

これが必要なのは、レコードがデータベースから取得され、モデルのバッキング プロパティでCreateDateあるNULL場合、可能な値として null を受け入れる必要があるためです。プロパティを単なるフレームワークとして宣言すると、受け入れないプロパティDateTime CreateDateに値を割り当てることができなかったことを通知するエラーが表示されます。NULLNULL

したがって、次のものが必要です。

public class Account()
{
    ...

    public DateTime? CreateDate { get; set; }
}
于 2012-10-06T04:38:23.637 に答える
4

この例に基づいて試してください:

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Family { get; set; }
    public string Phone { get; set; }
    public DateTime Birthday { get; set; }
}

DbContext と流暢な API:

public class dbMvc1:DbContext
{
    public DbSet<Student> Student { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Student>().Property(x => x.Birthday).IsOptional();
    }
}
于 2012-10-07T07:15:55.743 に答える