質問: 私はこれに関する矛盾する情報を見ている。 LearnEntityFrameworkCore.comはあなたが書くことができると言います ``` .HasComputedColumnSql("GetUtcDate()"); ``` > 列の値は、行が作成または更新されるたびにデータベースのGetUtcDate()メソッドによって生成されます > > ただし、SQL Serverの計算列のテクニカル.aspx)ドキュメントには、 次のように.aspx)書かれています。 > それらの値は、クエリで参照されるたびに再計算されます。 > >
回答: 良い質問。 `HasComputedColumnSql`どの計算カラムのタイプを表しているかは、EF Coreのドキュメントからは不明です。おそらくそれは関係する拡張の一部であるため、プロバイダ固有のものと考えられます。しかし、設定オプションがないので、動作を指定する必要があることに同意します。 SQL Serverの簡単なテストでは、作成された列は物理的に格納され**ず** ( `PERSISTED`オプションは使用されません)、 `GetUtcDate`が確定的でないため実際にはできません。したがって、最初のリンクからの`LastModified`例は正しくありません。列は読み込まれるたびに再計算されるため、目的のインテントには使用できず、通常の列として作成してコードで更新する必要があります。 `FullName`ような他のカラムに基づいた簡単な計算や、データが正しく格納されていないデータベース固有の変換関数(例えば、数値/日付データがテキストとして保存されているなど)を使用することが目的です。