добавление и сохранение новых элементов в коллекцию - PullRequest
0 голосов
/ 17 декабря 2011

Предположим, у нас есть Customer объект с коллекцией Payments.

Инициализация:

var dataContext = new TestDataContext();
dataContext.Customers.InsertOnSubmit(new Customer { Id = 1, Name = "Customer1" });
dataContext.SubmitChanges();
var customer = dataContext.Customers.Where(c => c.Id == 1).First();

Первый случай:

customer.Payments.Add(new Payment { Amount = 100, CustomerId = customer.Id });
dataContext.SubmitChanges();
var count = dataContext.Payments.Count(); // count == 0

Второй случай:

dataContext.Payments.InsertOnSubmit(new Payment { Amount = 100, Customer = customer });
dataContext.SubmitChanges();
var count = dataContext.Payments.Count(); // count == 1

Третий случай (в сочетании):

customer.Payments.Add(new Payment { Amount = 100, CustomerId = customer.Id });
dataContext.Payments.InsertOnSubmit(new Payment { Amount = 100, Customer = customer });
dataContext.SubmitChanges();
var count = dataContext.Payments.Count(); // count == 2 (!)

Я предполагаю, что InsertOnSubmit каким-то образом уведомляет объект DataContext об изменениях. Но просто удивляюсь, почему в первом случае не уведомляется?

P.S. Я использую SQL CE для Windows Phone.

1 Ответ

3 голосов
/ 08 ноября 2012

Вы пытались установить ссылку клиента на свойство Payment.Customer в первом случае?

Например, customer.Payments.Add(new Payment { Amount = 100, Customer = customer });

Обычно я бы не устанавливал идентификаторы явно, но использовалORM и установить правильные отношения между субъектами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...