Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить запись в таблицу many to many 
:(
    Опции темы
DenWPF
Дата 11.6.2011, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Создаю новую запись

Код

    var desk = new Desk()
            {
            x = Convert.ToInt32(Canvas.GetLeft(item)),
            y = Convert.ToInt32(Canvas.GetTop(item)),
            width = item.Width,
            height = item.Height,
            };


добавляю его в таблицу

Код

    m_RoomsContext.Desks.Add(desk);


А теперь мне нужно положить его в таблицу ManyToMany, а точнее положить его id, но проблема в том что объект ещё не имеет своего id.

Код

    m_RoomsContext.RoomToStandartDesks.Add(new RoomToStandartDesk()
                        {
                            id_room = int.Parse(btnSave.Tag.ToString()),
                            id_desk = desk.id
                        }
                        );

как это сделать?
PM MAIL   Вверх
jonie
Дата 12.6.2011, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



прямо скажем это не очень-то похоже на таблицы и базы данных....

Используй метод: сначала сохранить, потом получить id, потом записать его в объект, потом записать объект в базу.
Для транзационности используй using(new TransactionScope())


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
DenWPF
Дата 12.6.2011, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



вот у меня есть объект desk который я добавил, и после чего я сохранил, как я могу достать имено ид этого объекта?
выбрать из таблицы последнию запись мне не подходит.
PM MAIL   Вверх
v00d00
Дата 12.6.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.12.2005

Репутация: нет
Всего: нет



Чем ты пользуешься для работы с БД?

Entity Framework 4+ и NHibernate 3+ поддерживают работы с таблицами *->* таким образом что эта ссылочная таблица оказывается даже не замапленной на какую-нибудь сущность в модели. Кроме того когда ты сохраняешь новый объект через контекст после сохранения ORM подставит айдишник новой записи в твой объект. 

Если ты добавляешь записи вручную записанными запросами, большая часть СУБД поддерживают механизмы для выборки сгенеренного айдишника для последней записи. Например для SQL Server 2000+ 

Код

insert @somedata into @sometable

SELECT @@IDENTITY AS Ident


и делаешь ExecuteScalar для команды добавления
PM MAIL   Вверх
DenWPF
Дата 12.6.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



использую Entity Framework 4+.

Вот я сохраняю, а объекту не подставляется ID. Я это делаю сразу, он наверное не успевает...если да то как же это решить
PM MAIL   Вверх
KelTron
Дата 12.6.2011, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 9
Всего: 38



После этих строчек в desk.id будет реальное значение из базы данных
Код

m_RoomsContext.Desks.Add(desk);
m_RoomsContext.SaveChanges();




--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
DenWPF
Дата 12.6.2011, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



не обновляется.
В чем может быть причина?

Цитата

<EntityType Name="Desk">
          <Key>
            <PropertyRef Name="id" />
          </Key>
          <Property Name="id" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
          <Property Name="width" Type="float" Nullable="false" />
          <Property Name="height" Type="float" Nullable="false" />
          <Property Name="x" Type="int" Nullable="false" />
          <Property Name="y" Type="int" Nullable="false" />
          <Property Name="countMax" Type="int" Nullable="false" />
          <Property Name="countReal" Type="int" />
          <Property Name="date" Type="datetime" />
          <Property Name="id_status" Type="int" Nullable="false" />
        </EntityType>


Это сообщение отредактировал(а) DenWPF - 12.6.2011, 21:29
PM MAIL   Вверх
jonie
Дата 14.6.2011, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(v00d00 @  12.6.2011,  14:47 Найти цитируемый пост)
Если ты добавляешь записи вручную записанными запросами, большая часть СУБД поддерживают механизмы для выборки сгенеренного айдишника для последней записи. Например для SQL Server 2000+ 
Код

insert @somedata into @sometable
SELECT @@IDENTITY AS Ident


а вот я бы не делал SELECT @@IDENTITY, ой как не делал бы.... стоит перечитать про уровни изоляции транзакций и SCOPE_IDENTITY() ...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
DenWPF
Дата 17.6.2011, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



эээ я не использую ручной запрос
PM MAIL   Вверх
Kefir
Дата 18.6.2011, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



А почему вам нужно Id? EntityFramework отлично сам всё подставляет куда нужно при присвоении Navigation Property.

Что касается не обновляемого ID - не должно быть такого. Или ты с контекстом что-то сделал, или энтити твоя отцепляется от него по непонятным причинам. Если используется ванильный Entity Framework (установки по умолчанию), то всё должно обновляться. Если есть модификации - напиши какие и подробее закопипасти код добавления и сохранения контекста.
PM MAIL WWW Skype   Вверх
DenWPF
Дата 18.6.2011, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Устанавливал всё по дефолту.
PM MAIL   Вверх
Kefir
Дата 18.6.2011, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 2
Всего: 87



Так, эта, ты там выше закопипастил CSDL или SSDL? В общем проверь, что студия сгенерировала правильный SSDL (на диаграмме базы данных на всякий можешь нажать Generate Database from Model). В общем проверь что на стороне SSDL тоже все проперти правильные.
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.