Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于Oracle的实体连续失败,强制转换C无效#_C#_Entity Framework_Entity Framework 4.3 - Fatal编程技术网

C# 基于Oracle的实体连续失败,强制转换C无效#

C# 基于Oracle的实体连续失败,强制转换C无效#,c#,entity-framework,entity-framework-4.3,C#,Entity Framework,Entity Framework 4.3,我目前正在使用EntityFramework4.3来映射遗留oracle数据库。在我看来,所有的数据类型都与Oracle数据类型兼容,但是它总是抛出一个targetingException,内部异常为InvalidCastException。 所讨论的表使用复合键,我不确定这是否与我接收异常的原因直接相关。 我目前的代码如下 配置类: class NoteConfig : EntityTypeConfiguration<Note> { public NoteConfig()

我目前正在使用EntityFramework4.3来映射遗留oracle数据库。在我看来,所有的数据类型都与Oracle数据类型兼容,但是它总是抛出一个
targetingException
,内部异常为
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; }


}
表格布局:

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; }


}

断点输出:

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; }


}

这是一个数字数据类型问题,但它位于lineno字段上,如果您试图在小数位数设置为<0时映射数字数据类型,则ef会引发异常
并且在c中定义为int时不会自动截断十进制值,就像在c中定义浮点值或双精度值一样。

我相信很可能是日期更改造成了问题。,及。,所以
LanguageId
也会引起问题。这些理论的奇怪之处在于,我的其他实体可以很好地处理这些类型,我还尝试将它们直接映射到具有相同结果的字符串类型。所以请注意,josh这是使用实体框架和oracles EF4访问组件,通常由它们的EF自动处理数据源,而不是使用那些帖子引用的纯字符串sql操作,我通常非常擅长记住这一点,这一点我一定已经忘记了