Добавление связанных данных с несколькими LINQ to SQL DataContexts - PullRequest
1 голос
/ 27 декабря 2008

Я разрабатываю настольное приложение с использованием Linq to SQL. Из того, что я собрал, лучше сохранить объекты DataContext недолговечными, но я сталкиваюсь со следующей загадкой:

Мое приложение имеет много данных типа поиска, которые я хотел бы кэшировать на клиенте. Причина, по которой я хочу это кэшировать, заключается в том, что я не хочу искать соответствующую родительскую запись для каждой дочерней записи, которую нужно вставить, когда я выполняю большие операции типа ETL.

Когда я выполняю обновления базы данных, мне нужно связать свои обновленные записи с этими поисковыми данными. Теперь, с одним глобальным DataContext, это просто: я просто добавляю новые дочерние записи в коллекции отношений объектов поиска и нажимаю SubmitChanges ().

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

Это все довольно запутанно - стоит ли мне сдаваться и изучать Entity Framework вместо этого?

Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 27 декабря 2008

Entity Framework имеет тенденцию бороться с вами даже сильнее , когда дело доходит до отключения данных. Вы должны быть в состоянии использовать LINQ-to-SQL с присоединением / отключением довольно легко. Конечно, вам не всегда нужно устанавливать ссылку для привязки данных; у вас также есть возможность установить связанный id - т.е. у вас обычно есть пара свойств:

  • SomethingId (значение идентификатора внешнего ключа)
  • Что-то (ссылка)

Возможно, вы сможете просто установить идентификатор, не касаясь ссылки.

1 голос
/ 27 декабря 2008

Вы можете использовать detach / attach, чтобы удалить связь с контекстом данных, с которым вы извлекли объект, а затем подключить его к новому контексту данных, когда вы будете готовы его обновить.

Подробнее здесь .

Другая вещь, которую вы можете сделать, это посмотреть на nHibernate и использовать Linq для nHibernate .

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