我有以下类型:
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() 方法的参数。这是构建输出的实际错误:
The type 'Races.Minutes' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Data.Entity.ModelConfiguration.Configuration.StructuralTypeConfiguration.Property(System.Linq.Expressions.Expression>)' C:\Projects\Races\RaceDataContext.cs