質問: account.Amount }; newAccounts.Add(clonedAccount); }); AccountRepository.AddMany(newAccounts); AccountRepository.Save(); } ``` サイドポイントとして、 `Amount`フィールドの`decimal(28,10)`宣言が実際に`OnModelCreating`はずであることを指摘した`OnModelCreating` 、彼は先に進んで、マイグレーションを追加しました。興味深いことにそれをやって、上のコードで問題を解決しました。 私の質問は二重です: 1. なぜこの問題は、元のレコードの作成にも、クローン作成時にのみ影響を及ぼさなかったのですか? 2. `OnModelCreating`その行を追加したのはなぜですか? ありがとう!
回答: 最初に精度セットを持たなかった場合、コードファーストのデフォルトの規則は、 精度が18でスケールが2 (小数点以下2桁しかない)の小数点以下桁を作成することです。最初はレコードが最初に切り捨てられていた可能性があります。 また、既定では、 TruncateDecimalsToScale.aspx)がfalseに設定されていない限り、SQL ServerプロバイダのSQLジェネレータは`SqlParameter.Scale`プロパティをモデルで定義されたスケールに設定します。これはデータベースの更新と挿入に影響します。しかし、小数点以下の桁数のレコードがどのようにデータベースに格納されているのか分かりません。