0

現在、エンティティ フレームワーク 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; }


}

テーブル レイアウト:

テーブルレイアウト

ブレークポイント出力:

ブレークポイント出力

4

1 に答える 1

0

これは数値データ型の問題でしたが、linenoフィールドにあり、小数点以下の桁数が0未満に設定されているときに数値データ型をマップしようとすると、efが例外をスローし、c#でintとして定義するときに小数点以下の値を自動的に切り捨てないようです。 C#ではfloatまたはdouble値を使用します

于 2012-05-09T14:47:34.337 に答える