2

Oracle から新しくリリースされたマネージド ODP.NET ドライバーを使用してデータベースに接続しています (こちらを参照)。接続設定は問題ありません。ここでは、非常に単純な LINQ to SQLの例を使用してみます。問題は、ArgumentOutOfRangeExceptionを取得することです。foreach-Statement に表示されます。

私の非常に単純なオブジェクト:

[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

私は実際にこれをたくさん検索しましたが、ドライバーが非常に新しく、以前は誰も問題を抱えていなかったように見えるため、有効な結果を見つけることができません。この Web サイトに記載されているように、ドライバーが LINQ to SQL をサポートしていることは確かです。残念ながら、Visual Studio が提供する Entity Framework も自動生成ツールも使用できません。

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 に答える