0

完全に理解していないので当然ですが、数日前からこれらの問題が発生しています。

日時フィールドがあり、エンティティ フレームワークを使用しています。

シナリオ:

  1. フィールドを計算するように設定すると(データベース生成オプション)、次のようにフィールドを更新できません。

        db.ComputeUnites.Find(this._ComputeGuid).HeartBeat = DateTime.UtcNow;
        db.SaveChanges();
    
  2. 計算済みに設定せず、必須に設定した場合。フィールドが設定されていない新しい要素を追加しようとすると、エラーが発生します。(これは理にかなっていますが、サーバーのデフォルト値を(getutcdate())に設定したので、設定されていないときに作動することを望んでいました.

  3. オプションに設定してデフォルト値を再度設定しようとしましたが、新しいオブジェクトを追加できますが、デフォルト値は使用されず、代わりに 0:0:0 00:000 (構文を正しく覚えていない) 時間が挿入されます.

私が望むのは、新しく追加されたオブジェクトにフィールドを設定しない場合、デフォルト値を使用する必要があることです。また、フィールドを提供または更新する場合は、C# クラスからの値を使用する必要があります。

私は何が欠けていますか?

4

1 に答える 1

1

新しく追加したオブジェクトにフィールドを設定しない場合は、デフォルト値を使用する必要があります。また、フィールドを指定または更新する場合は、c#クラスからの値を使用する必要があります。

それはサポートされていません。ストアで生成してEFがデータベースに設定された値を使用するが、アプリケーションで設定された値を使用しないようにするか、アプリケーションで生成してEFがデータベースのデフォルト値を使用しないようにすることができます。サーバーに送信されるアプリケーション。

最も簡単な回避策は、アプリケーションで正しいデフォルト値を直接設定し、データベースのデフォルト値を使用せず、生成パターンを保存することです。

public class ComputeUnit {
    ...

    public ComputeUnit() {
        HeartBeat = DateTime.UtcNow;
    }

    ...
}
于 2012-10-29T08:50:18.140 に答える