0

私は Database First を使用しています。スキーマを更新するたびに EDMX ファイルを更新すると、モデルの新しいクラスが生成されます。残念ながら、データベースで指定したデフォルトの列値は生成されません (デフォルトとして「getdate()」を持つ「TimeStamp」などの列)。

生成されたStudent.csクラスは次のようになります。

namespace ABC.Data
{
    using System;

    public partial class Student
    {
        public Student()
        {

        }

        public int StudentID { get; set; }
        public string Name { get; set; }
        public Nullable<System.DateTime> TimeStamp { get; set; }
    }
}

コンストラクターを常にTimeStamp現在の日付に設定する方法はありますか? 同じ名前空間に同じ名前などでヘルパー部分クラスを作成しようとしましたが、うまくいきません。たぶん私はヘルパークラスを間違っています。理想的には、新しいモデル クラスを生成した後でも、ヘルパー クラスが同じままであることを望みます。

4

1 に答える 1

0

DbContextクラスには、フックできるイベントがありObjectMaterializedます...

context.ObjectMaterialized += ObjectContext_OnObjectMaterialized

このイベント ハンドラーは、既定値を適用できます。

private void ObjectContext_OnObjectMaterialized(
    object sender, ObjectMaterializedEventArgs e)
{
    if (e.Entity is Student)
        (e.Entity as Student).TimeStamp = <default value>;
}

インスタンスを新規作成する代わりにcontext.Set<Student>().Create()、 の新しいインスタンスが必要な場合に使用することを覚えておく必要があります。Student

于 2013-06-30T14:11:17.817 に答える