1

私は次のタイプを持っています:

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

4

1 に答える 1

5

あなたは解決に近づいていました。

modelBuilder.Entity<Race>().Property(x => x.TotalMinutes.Value)
   .HasColumnName("RACEMINUTES");
于 2012-06-04T02:48:40.107 に答える