3

私は、特に dataAnnotations を使用して、EF CodeFirst で最初のステップを実行しています。現在、「DatabaseGenerated」属性を理解するために最善を尽くしています。私がこれまでに知っていること:

  • この属性を使用すると、プロパティ値の作成を処理するための 3 つのオプション (計算済み、Id、およびなし) が得られます。
  • この属性を使用すると、プロパティを手動で更新できないことを意味します。これはデータベースによって行われます。

したがって、「Id」オプションを使用すると何が起こるか想像できるので、「計算済み」オプションを使用すると何が起こるかわかりません。これにより、データベースにフィールド値を計算するように指示する必要があります。

例: フィールド「sum」 = フィールド「price」 + フィールド「shipping」。

しかし、どうすればそれをそのように使用できますか?私は周りを見回しましたが、例は見つかりませんでした。手伝っていただけませんか?

4

1 に答える 1

0

EF を使用して列の計算方法をデータベースに伝えることはできません。列がデータベースで生成されたものであるため、コードで使用するためにデータベースから取得する必要があることを EF に伝えることしかできません。

データベースが列を計算する方法を制御するには、EF の外部またはデータベースの初期化ロジックで手動で指示する必要があります。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    context.Database.ExecuteSqlCommand("RAW SQL HERE");
}

SQL (MS T-SQL) は次のようになります (詳細はこちら):

CREATE TABLE t2 (a int, b int, c int, x float, 
   y AS CASE x 
         WHEN 0 THEN a 
         WHEN 1 THEN b 
         ELSE c 
      END)

SQL の場合、計算列に関する情報は次のとおりです: http://msdn.microsoft.com/en-us/library/ms191250(v=sql.105).aspx

参照用: http://msdn.microsoft.com/en-us/library/gg193958.aspx

于 2012-09-12T13:24:44.413 に答える