努力EF6をコードで使用すると、計算された値が入力されません。計算される日時フィールド(FechaCreacion)があります。 Effortでエミュレートするにはどうすればよいですか?それで、SaveChanges()の後にDateTime.Nowが設定されていますか?
この記事では、 EFテストツールをComputed Columnで使用することは、私の例としてCode Firstの代わりにDB Firstですが、回答が得られていないようです。
EffortConnection connection = (EffortConnection)DbConnectionFactory.CreateTransient();
using (var c = new ControlConfigContext(connection))
{
c.Database.CreateIfNotExists();
CambioRepositoryTestLoadData.Load(c);
string direccionMac = "FFFF";
var repo = new CambioRepository(c);
var primerConcesionarioTerminal = repo.GetPrimerConcesionarioTerminal(direccionMac);
Assert.AreEqual("terminal1", primerConcesionarioTerminal.Terminal);
}
この値はSQLServerでGetDate()として計算されます。
this.Property(t => t.FechaCreacion).HasColumnName("FechaCreacion").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
SQL Serverではうまく動作しますが、単体テストでEffortを使用すると、フィールドは空の日付値になります。
この問題は最新のアップデートで修正されています。
グローバルEntityFrameworkEffortManager.UseDefaultForNotNullable
フラグをtrueに設定する必要があります。