我現在面臨一個問題,在測試其使用LINQ to SQL被測試如下無法訪問
方法(簡單的)的DAL庫已釋放的對象:
public List<tblAccount> GetAccountsByCustomer(tblCustomer customer)
{
using (OnlineBankingDataClassesDataContext dbcntx = new OnlineBankingDataClassesDataContext())
{
var accounts = dbcntx.tblAccounts.Where(p => p.tblCustomer.ID.CompareTo(customer.ID)==0);
return accounts.ToList<tblAccount>();
}
}
測試代碼如下所示:
static tblCustomer GetTopOneCustomer()
{
OnlineBankingDataClassesDataContext dbcntx = new OnlineBankingDataClassesDataContext();
var customers = dbcntx.tblCustomers.Take(1);
return customers.Single<tblCustomer>();
}
public static void Should_List_All_Account_By_Customer()
{
tblCustomer customer = GetTopOneCustomer();
DataController dc = new DataController();
List<tblAccount> accounts=dc.GetAccountsByCustomer(customer);
foreach (tblAccount account in accounts)
{
string accountdetails=string.Format("Account ID:{0} \n Account Type:{1} \n Balance:{2} \n BranchName:{3} \n AccountNumber:{4}",
account.ID.ToString(), account.tblAccountType.Name,
account.Balance.ToString(),
account.tblBranch.Name, account.Number);
Console.WriteLine(accountdetails);
}
}
我收到錯誤「無法訪問已處理的對象」。當訪問像這種情況下的關聯對象時,我使用的是account.tblAccountType.Name
。我知道這與DataContext
有關。我該如何獲得這個代碼的工作。
我通常會將它們包裝在一個類中,因此當該類處於活動狀態時,您的數據庫連接將處於活動狀態。 – Trisped 2012-07-06 15:53:40
@DaveShaw問題是,在處理dbcntx DataContext後,實體正在訪問相關對象。 GetTopOneCustomer根本不應該引起任何問題。 – JonC 2012-07-06 16:07:45