я обращенный к проблеме во время тестирования библиотеки DAL, который использует LINQ для SQLНе удается получить доступ к расположенному объекту
метода, который испытывается, как показано ниже (простая один):
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
@DaveShaw Проблема заключается в том, что связанные объекты обращаются к объектам после того, как был удален DataContext dbcntx. GetTopOneCustomer не должен создавать никаких проблем. – JonC