|
Обновление сложной модели
|
|||
---|---|---|---|
#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:36 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#18+
simlex, у вас что, адрес ссылается на центр?) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2014, 21:50 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#18+
Да, по FK ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2014, 22:02 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#18+
У адреса есть свой PK - это Id, но есть еще два FK Center1_Id и Center2_Id ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2014, 22:03 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#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:08 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#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: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 virtual Center1 Center1{ get; set; } public virtual Center2 Center2{ get; set; } ... } ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2014, 22:11 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#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(); } ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2014, 23:38 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#18+
simlex, 1) а не логичнее в центре сделать ссылку на его адрес?) 2) Прикольное решение, про Attach вы видимо не слышали. http://msdn.microsoft.com/ru-ru/library/bb896271(v=vs.100).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2014, 13:37 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#18+
Lelouch,а не логичнее в центре сделать ссылку на его адрес А как тогда задать cascade delete для Address с помощью code first или fluentAPI? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2014, 15:22 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#18+
simlex,Прикольное решение, про Attach вы видимо не слышали Слышал... Дело в том, что при рендеринге представления при создании нового Center1, даже если вписать во View для Addreess Html.HiddenFor(x=>x.Center1_Id), например, то Center1_Id будет null вместо 0... Пока не нашел, как это исправить... Буду признателен, если подскажите... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2014, 15:26 |
|
Обновление сложной модели
|
|||
---|---|---|---|
#18+
simlex, cascade delete чего? центра при удалении адреса? А как у вас связано View, ID и Attach ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2014, 16:01 |
|
|
start [/forum/topic.php?fid=17&fpage=18&tid=1349729]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 470ms |
0 / 0 |