私は次のタイプを持っています:
public class Minutes
{
public double Value { get; set; }
}
このタイプは、次のようなエンティティで使用されます。
public class Race
{
public string Name { get; set; }
public string Location { get; set; }
public Minutes TotalMinutes { get; set; }
}
私はこのようなDbContextを持っています:
public class RaceDataContext: DbContext
{
public DbSet<Race> Races { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<Minutes>().Property(x => x.Value);
}
}
アプリケーション開発では、MS-SQLデータベースを問題なく使用してきました。次に、クライアントのOracleデータベースに移動する必要があります。Oracleデータベースには、変更できない列を持つ固定テーブルがあります。レースを読み取り、更新し、挿入できる必要があります。そこで、マッピングコードを次のように更新しました。
public class RaceDataContext: DbContext
{
public DbSet<Race> Races { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<Minutes>().Property(x => x.Value);
modelBuilder.Entity<Race>().Property(x => x.TotalMinutes).HasColumnName("RACEMINUTES"); // <-- ERROR HERE
}
}
上記のコードはコンパイルされません。TotalMinutesは、.Property()メソッドのパラメーターとして使用されるnull許容値でなければならないことを示しています。ビルド出力からの実際のエラーは次のとおりです。
タイプ'Races.Minutes'は、ジェネリックタイプまたはメソッド'System.Data.Entity.ModelConfiguration.Configuration.StructuralTypeConfiguration.Property(System.Linq。 Expressions.Expression>)'C:\ Projects \ Races \ RaceDataContext.cs