powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ attach
9 сообщений из 9, страница 1 из 1
LINQ attach
    #36129965
umluser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть несколько взаимосвязанных таблиц, давайте назовём их
products, vendors, categories
соответственно products ссылается на vendors и categories

При добавлении какого-то продукта я делаю так:
dc.Products.InsertOnSubmit(newProduct);
Соответственно автоматом заполняются таблицы для vendors и categories.

Допустим я хочу изменить какой-то продукт.
Предположим, что он не ссылался ни на одну категорию.
При
Код: plaintext
1.
dc.Products.Attach(modifiedProduct);
dc.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, modifiedProduct);
изменяется только таблица с продуктами.

Как сделать так, чтобы автоматически изменялись и другие таблицы, как это происходит при InsertOnSubmit()
...
Рейтинг: 0 / 0
LINQ attach
    #36135620
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непонятен вопрос, связки Attach/Refresh и InsertOnSubmit делают совершенно разные вещи. Причем тут связанные таблицы?
...
Рейтинг: 0 / 0
LINQ attach
    #36137200
umluser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы,

каким образом через LINQ тогда можно проапдейтить данные?
Сейчас это происходит путём удаления всех записей из таблиц, после чего
вызывается .InsertOnSubmit() который автоматом заполняет все таблицы.
...
Рейтинг: 0 / 0
LINQ attach
    #36137378
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
данные откуда берутся? Если аттачишь сущность с заданным айди то она автоматом будет сохранена в базу при сабмите

общий алгоритм такой:
Код: plaintext
1.
2.
3.
             if (entity.IsNew)
                    table.InsertOnSubmit(entity);
                else
                    table.Attach(entity, true);
...
Рейтинг: 0 / 0
LINQ attach
    #36137515
umluser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы общий алгоритм такой:
Код: plaintext
1.
2.
3.
             if (entity.IsNew)
                    table.InsertOnSubmit(entity);
                else
                    table.Attach(entity, true);


т.е. при table.Attach(entity, true) LINQ2SQL должен по идее и проапдейтить и связанные таблицы?
у меня возникает ошибка "An entity can only be attached as modified without original state if it declares a version member or does not have an update check policy."
при добавлении колонки Timestamp в таблицу у меня возникает исключение "Row not found or changed"
...
Рейтинг: 0 / 0
LINQ attach
    #36137716
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
откуда берется новая сущность, как создается?
...
Рейтинг: 0 / 0
LINQ attach
    #36139730
Фотография XLinq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umluser,

http://msdn.microsoft.com/ru-ru/library/bb896271.aspxЕсли присоединяемый объект связан с другими объектами, необходимо явно определить эти связи одним из следующих способов:
* Присоединить оба объекта к контексту объекта и затем вызвать метод Attach для объекта EntityCollection или EntityReference с тем, чтобы определить эту связь.
* Если же ни один из объектов не присоединяется, нужно вызвать метод Add для EntityCollection и указать связанный объект или задать свойство Value объекта EntityReference связанному объекту. Далее нужно присоединить корневой узел графа объектов к контексту объекта. Этот метод можно использовать для создания графа объектов из отсоединенных объектов с последующим присоединением этого графа к контексту объекта.
...
Рейтинг: 0 / 0
LINQ attach
    #36139756
Фотография XLinq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
LINQ attach
    #36159092
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umluser,

Most of these problems occur when you are not following the main purpose of Attach, which is to connect entities that are already attached to the ObjectContext and are not new.

You cannot use Attach to attach another EntityCollection; however, it is possible to attach an IEnumerable (discussed shortly). Otherwise, you need to attach one entity at a time.

You cannot use Attach when the EntityState of either end is Detached. ObjectContext is required to work out the relationship. Do an ObjectContext.Attach first.

You cannot use Attach when the ends are in different contexts.

You cannot use Attach to attach entities whose EntityState is Added. You'll want to use Add in this case.

You cannot use Attach to attach entities whose EntityState is Deleted. It's not possible to create a RelationshipEntry for a deleted entity.

You cannot use Attach to reassign entities to another graph.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ attach
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]