私はEFデータベースを最初に使用しています更新日を設定します
私は '日付更新'の列を持つテーブルを持っています。レコードが更新されると、現在のdatetimeが必要です。私はEFを使用しているので、自動生成されたモデルクラスは編集できません。私はEFをアップグレードすると上書きされると仮定しているので、私はT4テンプレートを編集したくないです
私はこれに従った別の問題を解決するために:http://www.ozkary.com/2015/01/add-data-annotations-to-entity.html私はちょうど私が言うことができる自動生成されたEFクラス
それで、私はこれに答えました:set default value in class constructor C#これは私が必要とする解決策を示すようです。しかし、私がテストすると、DateUpdated
は変更されません。
私の自動生成されたクラスの一部です。
namespace bt2.Models
{
[MetadataType(typeof(TaskMD))]
public partial class Task
{
}
internal sealed class TaskMD
{
[DisplayName("ID")]
public int Task_ID { get; set; }
[DisplayName("Task Type")]
public int TaskType_ID { get; set; }
public System.DateTime DTUpdated {
get { return DateTime.Now; }
set { this.DTUpdated = value; }
}
}
私の知る限りは、この第二のクラスが拡張されて言うことができるように:あなたはDTUpdated
namespace bt2.Models
{
using System;
using System.Collections.Generic;
public partial class Task
{
public int Task_ID { get; set; }
public int TaskType_ID { get; set; }
public int Emp_ID { get; set; }
public System.DateTime DTInserted { get; set; }
public System.DateTime DTUpdated { get; set; }
public virtual TaskType TaskType { get; set; }
public virtual Task Tasks1 { get; set; }
public virtual Task Task1 { get; set; }
}
}
ここでは、ここで私は自動生成されたクラスに余分なコードを追加しようとした私の「相棒」クラスだ見ることができます元のクラス
私は自分の問題を解決したいと思っていますが、ここで何が起こっているのかさらに理解したいと思います。
これは良い方法です。また、単にSaveChangesメソッドをオーバーライドし、現在のdatetimeをUpdatedTimeフィールドに設定することもできます。 – Teja
はい - すべてのテーブルにDTUpdatedカラムがない場合 - OPが既存のメソッドを保持したい場合 –
これはすでに正しく処理されています! if(propertyInfo!= null)は、プロパティが存在することを示します。それが存在しなければ、それは気にしません。私は同様のロジックを使用しました。 – Teja