
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.08.2014, 21:36
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
Здравствуйте! Есть сложная модель Center (какой-то центр, здание). У центра есть адрес (Address). Address в БД связан с Center по FK с CascadeDelete. Такая же зависимость между OtherCenter и Address. Получается, что Address содержит в БД два FK (на Center и OtherCenter) с CascadeDelete. Так вот, если создать две одинаковые таблицы в БД (например AddressForCenter и AddressForOtherCenter) для Center и OtherCenter соответсвенно, то все обновляется отлично. Если же так, как реализовано сейчас (два поля, - Center_Id и OtherCenter_Id), то вместо обновления (Center или OtherCenter ) добавляется новая запись. Не подскажите, как исправить, чтоб работало корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 21:50
|
|||
|---|---|---|---|
Обновление сложной модели |
|||
|
#18+
simlex, у вас что, адрес ссылается на центр?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 22:02
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
Да, по FK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 22:03
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
У адреса есть свой PK - это Id, но есть еще два FK Center1_Id и Center2_Id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 22:08
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
public class Center1 { public int Id{ get; set; } ... } public class Center2 { public int Id{ get; set; } ... } public class Coordinates { public int Center1_Id{ get; set; } public int Center1_Id{ get; set; } public int Center2_Id{ get; set; } ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 22:10
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
Простите, до этого неправильно написал public class Center1 { public int Id{ get; set; } ... } public class Center2 { public int Id{ get; set; } ... } public class Coordinates { public int Id{ get; set; } public int Center1 Center1{ get; set; } public int Center2 Center2{ get; set; } ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 22:11
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
Да емое! Вот так public class Center1 { public int Id{ get; set; } ... } public class Center2 { public int Id{ get; set; } ... } public class Coordinates { public int Id{ get; set; } public virtual Center1 Center1{ get; set; } public virtual Center2 Center2{ get; set; } ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 22:23
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
simlex, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2014, 23:38
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
Вопрос закрыт, спасибо. Кому интересно: public void Save(Center model) { //Здесь Include при необxодимости в Collection var oldModel = this.Collection.FirstOrDefault(x=>x.Id==model.Id); if (model.Id == 0) { oldModel = model; _context.Entry(oldModel).State = EntityState.Added; _context.Entry(oldModel).CurrentValues.SetValues(model); } else { _context.Entry(oldModel).CurrentValues.SetValues(model); _context.Entry(oldModel).State = EntityState.Modified; //Address model.Address.Id = oldModel.Address.Id; _context.Entry(oldModel.Address).CurrentValues.SetValues(model.Address); } _context.SaveChanges(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.08.2014, 13:37
|
|||
|---|---|---|---|
Обновление сложной модели |
|||
|
#18+
simlex, 1) а не логичнее в центре сделать ссылку на его адрес?) 2) Прикольное решение, про Attach вы видимо не слышали. http://msdn.microsoft.com/ru-ru/library/bb896271(v=vs.100).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.08.2014, 15:22
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
Lelouch,а не логичнее в центре сделать ссылку на его адрес А как тогда задать cascade delete для Address с помощью code first или fluentAPI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.08.2014, 15:26
|
|||
|---|---|---|---|
|
|||
Обновление сложной модели |
|||
|
#18+
simlex,Прикольное решение, про Attach вы видимо не слышали Слышал... Дело в том, что при рендеринге представления при создании нового Center1, даже если вписать во View для Addreess Html.HiddenFor(x=>x.Center1_Id), например, то Center1_Id будет null вместо 0... Пока не нашел, как это исправить... Буду признателен, если подскажите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.08.2014, 16:01
|
|||
|---|---|---|---|
Обновление сложной модели |
|||
|
#18+
simlex, cascade delete чего? центра при удалении адреса? А как у вас связано View, ID и Attach ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=17&tablet=1&tid=1349729]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 276ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...