我正在使用Oracle的托管ODP.NET客户端和Entity Framework。它运行良好。但是在不同的服务器上,我遇到了不同的行为。我相信这与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
我有一个触发器自动填充(parent和child的)id,同时我在Entity Framework配置中使用了Store Generated Pattern = Identity
。
我的问题是:
在我的开发机器上,它完美地按预期工作。两行都插入到它们各自的表中。但是,在服务器上,我遇到了一个错误,提示:The specified value is not an instance of type 'Edm.Decimal'
。
更多信息:
Oracle.ManagedDataAccess (v 4.121.1.0) Entity Framework (v v4.0.30319.1)
这在开发机器(工作正常)和服务器(不工作)上都是如此。
有什么想法吗?