2

我正在使用 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 提供的自动生成工具。

4

1 回答 1

1

Linq to SQL 不支持 Oracle。如果你想像使用 linq to sql 一样使用 ODP.NET 和 Linq,我建议你使用 ALinq。http://www.alinq.org

于 2013-03-09T17:29:30.747 回答