|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
Подскажите возможно ли такое сделать на EF. Имеется такая модель данных: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
я хочу избежать такого кода: Код: c# 1. 2. 3. 4. 5. 6.
Можно ли как-то сделать, чтобы работал такой код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Т.е. чтобы EF сам при вставке определял наличие сущности - если ее нет, создавал бы, а если есть - подставлял бы только ссылку на ID. Думаю, что если объявить модель с составным первичным ключом, то работать будет: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но так ключ станет составным и с ним придется существовать (придется выкинуть ID), чего не очень хотелось бы допускать. Сейчас сущность самая по себе уже маленькая. Фактически придется все ее поля делать ключевыми, и тогда практического смысла от самой таблицы практически не будет - разве что ради обеспечения ссылочной целостности и обеспечения действительно уникальности в рамках базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 13:34 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
видимо нельзя ) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:04 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
TsHeloWorlder, Дело не в EF, это с точки зрения банальной логики -- полнейшая бессмыслица. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:40 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
hVostt, Нельзя ли этого сделать через Sql Merge с output параметром на каком нибудь материализованном представлении ? Хочется какой-то оптимизации что ли. Теоретически наверное можно оптимизировать, если уйти от EF и прийти к процедурам с табличными параметрами. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 17:07 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
TsHeloWorlder, внятно можете объяснить, чего вы хотите? что значит, EF автоматически должен создавать сущность, если её нет? зачем такая сущность вообще нужна, если она автоматически создаётся? чем заполнить данные её полей? чем вы вообще там занимаетесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 17:54 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
hVostt, Есть некая сущность Tab1Model. На нее ссылаются другие сущности. Т.е. Tab1Model выступает как некий справочник. Хотелось бы минимизировать количество обращений к БД. Чтобы при создании сущности OtherTab сразу же создавалась сущность Tab1Model если ее нет в БД, либо заполнялось поле OtherTab.Tab1ModelId, если такая сущность уже есть. Я могу решить это таким кодом: Код: c# 1. 2. 3. 4. 5. 6.
Но тут будет 2 обращения к БД. Вот хотелось бы это оптимизировать. Это скорее академический интерес, чем практический. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 18:08 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
TsHeloWorlderХотелось бы минимизировать количество обращений к БД. Загрузите справочник в кеш. TsHeloWorlderЧтобы при создании сущности OtherTab сразу же создавалась сущность Tab1Model если ее нет в БД, либо заполнялось поле OtherTab.Tab1ModelId, если такая сущность уже есть. Смотрите, есть ли сущность в кеше, если нет, создавайте. TsHeloWorlderНо тут будет 2 обращения к БД. Вот хотелось бы это оптимизировать. Без кеша у вас всегда будет минимум 2 обращения, так как вы не знаете, есть ли запись в справочнике, EF тоже не знает и гадалкой не подрабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 18:35 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
TsHeloWorlderЭто скорее академический интерес, чем практический. Академический интерес у меня. Зачем вам создавать запись в справочнике вообще, если вам этот справочник до фанаря? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 18:36 |
|
Можно ли такое, и как ?
|
|||
---|---|---|---|
#18+
hVostt, Ну. Простое отношение master-detail. Tab1Model - master OtherTab - detail Соответственно - нужно либо создать master, если его нет. Либо использовать тот, что есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 18:55 |
|
|
start [/forum/topic.php?fid=17&msg=39568419&tid=1349237]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 279ms |
0 / 0 |