基于Oracle的实体连续失败并使用Invalid Cast C#

时间:2012-05-09 12:58:51

标签: c# entity-framework entity-framework-4.3

我目前正在使用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; }


}

表格布局:

Table Layout

断点输出:

Breakpoint Output

1 个答案:

答案 0 :(得分:0)

这是一个数字数据类型问题,但是它出现在lineno字段上,并且如果在设置小数位数时尝试映射数字数据类型,则会出现ef抛出异常&lt; 0 在c#中定义为int时不会自动截断十进制值,就像在c#中使用float或double值一样。