我目前正在使用Entity framework 4.3来映射遗留的oracle数据库。在我看来,所有数据类型都与Oracle数据类型兼容,但它总是抛出TargetInvocationException
,内部异常为InvalidCastException
。
有问题的表使用复合键,我不确定这是否与我收到异常的原因直接相关。
我目前的代码如下
配置类:
class NoteConfig : EntityTypeConfiguration<Note>
{
public NoteConfig()
{
Property(m => m.DateChanged).HasColumnName("DATE_CHANGED");
Property(m => m.ObjectId).HasColumnName("OBJECT_ID");
Property(m => m.ObjectType).HasColumnName("OBJECT_TYPE");
Property(m => m.Subject).HasColumnName("SUBJECT");
Property(m => m.Text).HasColumnName("TEXT");
Property(m => m.EnteredBy).HasColumnName("ENTERED_BY");
Property(m => m.LineNo).HasColumnName("LINE_NO");
Property(m => m.LanguageId).HasColumnName("LANGUAGE_ID");
//composite key mapping
HasKey(m =>
new {
m.ObjectType,
m.ObjectId,
m.LanguageId,
m.Subject,
m.LineNo,
});
ToTable("TSW_INT_NOTES", Settings.Default.DbSchema);
}
}
模特课程:
public class Note
{
// comp key (languageid, objectid, lineno, object type, subject
public string Subject { get; set; }
public string Text { get; set; }
public string ObjectType { get; set; }
public string ObjectId { get; set; }
public DateTime DateChanged { get; set; }
public string EnteredBy { get; set; }
public string LineNo { get; set; }
public int LanguageId { get; set; }
}
表格布局:
断点输出:
答案 0 :(得分:0)
这是一个数字数据类型问题,但是它出现在lineno字段上,并且如果在设置小数位数时尝试映射数字数据类型,则会出现ef抛出异常&lt; 0 在c#中定义为int时不会自动截断十进制值,就像在c#中使用float或double值一样。