У меня есть пара таблиц со структурой отношений, аналогичной стандартным таблицам Order, OrderLine.
При создании контекста данных он дает классу Order свойство OrderLines, которое должно быть заполнено объектами OrderLine для этого конкретного объекта Order.
Конечно, по умолчанию это задержит загрузку материала в свойстве OrderLine, но это должно быть довольно прозрачно, верно?
Хорошо, вот моя проблема: я получаю пустой список, когда я иду MyOrder.OrderLines
, но когда я иду myDataContext.OrderLines.Where(line => line.OrderId == 1)
, я получаю правильный список.
public void B()
{
var dbContext = new Adis.CA.Repository.Database.CaDataContext(
"<connectionString>");
dbContext.Connection.Open();
dbContext.Transaction = dbContext.Connection.BeginTransaction();
try
{
//!!!Edit: Imortant to note that the order with orderID=1 already exists
//!!!in the database
//just add some new order lines to make sure there are some
var NewOrderLines = new List<OrderLines>()
{
new OrderLine() { OrderID=1, LineID=300 },
new OrderLine() { OrderID=1, LineID=301 },
new OrderLine() { OrderID=1, LineID=302 },
new OrderLine() { OrderID=1, LineID=303 }
};
dbContext.OrderLines.InsertAllOnSubmit(NewOrderLines);
dbContext.SubmitChanges();
//this will give me the 4 rows I just inserted
var orderLinesDirect = dbContext.OrderLines
.Where(orderLine => orderLine.OrderID == 1);
var order = dbContext.Orders.Where(order => order.OrderID == 1);
//this will be an empty list
var orderLinesThroughOrder = order.OrderLines;
}
catch (System.Data.SqlClient.SqlException e)
{
dbContext.Transaction.Rollback();
throw;
}
finally
{
dbContext.Transaction.Rollback();
dbContext.Dispose();
dbContext = null;
}
}
Итак, насколько я вижу, я не делаю ничего особенно странного, но я думаю, что orderLinesDirect
и orderLinesThroughOrder
дадут мне один и тот же набор результатов.
Может кто-нибудь сказать мне, почему это не так?