VS2010 C# Express と MS SQL Server 2012 を使用しています。
C# を使用して、作成したテスト データベースにクエリを実行しようとしています。
私のC#コードは次のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataContext db = new DataContext("C:\\Program Files\\Microsoft SQL Server\\MSSQL10.SQLEXPRESS\\MSSQL\\DATA\\test.mdf");
Table<Portfolios> PORTFOLIO = db.GetTable<Portfolios>();
var q =
from c in PORTFOLIO
where c.PORTF_CODE == "PTF1"
select c;
Console.WriteLine(q);
foreach (var portf in q)
{
Console.WriteLine("id = {0}, City = {1}", portf.PORTF_CODE, portf.PORTF_NAME);
Console.ReadLine();
}
}
}
[Table(Name = "PORTFOLIO")]
public class Portfolios
{
[Column(IsPrimaryKey = true)]
public int PORTF_ID;
[Column]
public string PORTF_CODE;
[Column]
public string PORTF_NAME;
[Column]
public int BENCH_ID;
[Column]
public int CCY_ID;
}
}
クエリしようとしている PORTFOLIO テーブルは、次のコードを使用して作成されました。
CREATE TABLE PORTFOLIO
( PORTF_ID INT IDENTITY(10000, 1) PRIMARY KEY CLUSTERED
, PORTF_CODE VARCHAR(25) NOT NULL
, PORTF_NAME VARCHAR(200) NOT NULL
, BENCH_ID INT
, CCY_ID INT)
INSERT INTO PORTFOLIO(PORTF_CODE, PORTF_NAME)
VALUES('PTF1', 'PTF1 - Portfolio 1');
上記を作成したら、データベースをデタッチし、c# コードを実行します。コード行をステップオーバーすると、次のエラーが発生します。
foreach (var portf in q)
エラーの内容: 無効なオブジェクト名 'PORTFOLIO'。これは、データベース内に PORTFOLIO オブジェクトが見つからないことを意味していると思いましたが、そこにあることと、その中にデータがあることを何度か確認しました。確実にするために、データベースを数回再作成しました。
PORTFOLIOオブジェクトが見つからない理由を誰でも見つけられますか? ありがとう