我正在使用 Oracle 新发布的 Managed ODP.NET 驱动程序连接到我的数据库(参见此处)。连接设置很好。我现在尝试使用一个非常简单的 LINQ to SQL示例。问题是我得到了ArgumentOutOfRangeException。它出现在 foreach 语句中。
我非常简单的对象:
[Table(Name = "my_mgr.ADDRESS")]
public class Address
{
[Column(Name = "NAME")]
public string Surname;
[Column(Name = "VNAME")]
public string Forename;
[Column(Name = "ANZ")]
public int Anz;
}
测试查询的部分:
DataContext db = new DataContext(inst.Connection);
Table<Address> addressTable = db.GetTable<Address>();
if (addressTable != null)
{
//"SELECT * from my_mgr.ADDRESS WHERE anz > 0";
var query = from p in addressTable where p.Anz > 0 select p;
foreach (var p in query)
{
MessageBox.Show(
"Forename: " + p.Forename + "\n" +
"Surname: " + p.Surname
);
}
}
而我原来的 SQL 查询是(实际上是有效的):
SELECT * from my_mgr.ADDRESS WHERE anz > 0
我实际上为此搜索了很多,但我找不到有效的结果,因为驱动程序非常新,而且似乎以前没有人遇到过问题。我非常确定驱动程序支持 LINQ to SQL,如本网站所述。遗憾的是,我既不能使用实体框架,也不能使用 Visual Studio 提供的自动生成工具。