5

Entity Frameworkで Oracle のマネージド ODP.NET クライアントを使用しています。それはうまくいっています。ただし、サーバーごとに異なる動作をしています。DLLのバージョンに関係があると確信していますが、これまでのところ違いは見つかりませんでした.

私はこれらのテーブルを持っています:

create table parent (
   parent_id number primary_key, 
   data varchar2(100)
);
create table child (
   child_id number primary key, 
   parent_id number references parent(parent_id)
);

そして、これらのエンティティ:

public class Parent {
    Int32 Id { get; set; }
    string Data { get; set; }
}
public class Child {
    Int32 Id { get; set; }
    Parent Parent { get; set; }
}

これはコードです:

Entities e = new Entities(connectionString);
Parent p = new Parent();
parent.Data = "TEST DATA!";
Child c = new Child();
c.Parent = p;
e.Children.AddObject(c);
e.SaveChanges(); // exception here, in one server, not on the other

両方 (親と子) に自動的に入力するトリガーがあり、エンティティ フレームワーク構成で使用しています。idStore Generated Pattern = Identity

私の問題は次のとおりです。

私の開発マシンでは、期待どおりに完全に機能します。両方の行がそれぞれのテーブルに挿入されます。ただし、サーバーでは、次のエラーが表示されますThe specified value is not an instance of type 'Edm.Decimal'

より詳しい情報:

Oracle.ManagedDataAccess (v 4.121.1.0) エンティティ フレームワーク (v v4.0.30319.1)

両方: 開発マシン (動作中) + サーバー (動作していない)。

アイデア?

4

2 に答える 2

4

Trying changing the definition of your Id column from Int32 to Decimal. I've had this problem several times and I think that fixed it.

public class Parent {
    Decimal Id { get; set; }
    string Data { get; set; }
}
public class Child {
    Decimal Id { get; set; }
    Parent Parent { get; set; }
}
于 2013-10-31T13:48:14.567 に答える