1
我有以下類型:如何使用代碼優先的EF 4.3將複雜類型的屬性映射到特定的表列?
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()方法的參數。下面是來自生成輸出的實際錯誤:
類型「Races.Minutes」必須是爲了 非空值類型在通用類型或方法 「系統用它作爲參數「T」 .Data.Entity.ModelConfiguration.Configuration.StructuralTypeConfiguration.Property(System.Linq.Expressions.Expression>)」 C:\項目\種族\ RaceDataContext.cs
非常感謝。當解決方案很簡單時,我喜歡它。 –