我正在使用 EF 4.3 并且正在访问 Oracle 数据库。由于 EF 如何为 Oracle 数据库生成 SQL,并且因为 EF 4.3 不允许添加自定义约定,我必须手动为所有大写的每个属性指定列名。
[Column("MYPROPERTY")]
public string MyProperty { get; set; }
那么,对于使用复杂类型的属性,我能做些什么呢?我有以下复杂类型:
public class Minute {
public int Value { get; set; }
}
和以下 DbContext:
public class MyDbContext : DbContext {
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<Minutes>().Property(x => x.Value);
}
}
我的实体:
[Table("MYENTITY")]
public class MyEntity {
[Column("MYPROPERTY")]
public string MyProperty { get; set; }
[Column("MYMINUTES")] //this does nothing
public Minutes MyMinutes { get; set; }
}
在生成的 SQL 中,该MyMinutes
属性被映射到一个不存在的"Extent1"."MyMinutes_Value"
...我想要的"Extent1"."MYMINUTES"
。
除了把头撞在桌子上,我还能在这里做什么?