|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Привет. Есть класс-сущность. Он используется в двух контекстах (один работает с актуальной базой, другой с архивной). Как в сущность добавить свойство IsArchived и выставить его в зависимости от контекста, в котором сущность ? Я добавляю свойство bool IsArchived, выставляю ему Ignore. А вот как, и где, заполнить это свойство ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 12:43 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Можно в контексте перед сохранением изменений контекста просканировать через ChangeTracker наличие в нем определенных сущностей и выставить им нужный IsArchived. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 13:05 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Делать что-то типа этого ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Сложная идея какая-то. Но почему на SaveChanges ? Мне то нужно иметь это свойство при считывании данных из бд. Чтобы при обращении к DbSet у сущностей было это свойство заполнено. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 13:18 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
MrBitCoin Но почему на SaveChanges ? MrBitCoin выставить его в зависимости от контекста, в котором сущность Если про чтение речь идет, посмотри https://docs.microsoft.com/ru-ru/ef/core/modeling/value-conversions и соседние темы, можно подобрать что-то наиболее подходящее ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 13:30 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Ок. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 13:32 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Не нашел там то, что могло бы помочь. Там указано как производить конвертирование из одного типа в другой. Как я понимаю, для того, чтобы можно было сериализовать данные в бд. А мне нужно внутри контекста заполнить игнорируемое поле. Вы предлагаете использовать метод настройки конвертера, чтобы потом в коде делать примерно так ? Код: c# 1.
выглядит как то не очень... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 13:51 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Я ничего конкретного не предложил, пока занят, некогда копаться, я попытался предложить покопать в сторону модели: для разных контекстов можно сделать разный OnModelCreating и там уже присоединить либо разные конверторы к одной и той же сущности, либо что-то аналогично ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 14:22 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Да, я и сам думаю, что это нужно делать в OnModelCreate. Вот только как, не пойму. Конвертер, кажется, не подходит. Я написал выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 14:31 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
MrBitCoin Конвертер, кажется, не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 15:11 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Так а причем тут конвертер ? Конвертер из чего в чего ? И там и там bool свойство. Ковертер нужен, как я понимаю, для сериализации в БД. А тут мне нужно из двух разных контекстов просто предзаполнять одно из свойств по разному чуть чуть... Мне кажется тут конвертер вообще никаким боком. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 16:06 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
я и говорю - надо пробовать. Можно ли, например, добавить свойство, которое игнорится при записи в БД, но при этом имеет конвертор. А что мешает использовать разные сущности в разных контекстах, наследуемые одна от другой? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 16:35 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Shocker.Pro я и говорю - надо пробовать. Можно ли, например, добавить свойство, которое игнорится при записи в БД, но при этом имеет конвертор. А что мешает использовать разные сущности в разных контекстах, наследуемые одна от другой? А что это меняет ? Проверять потом не свойство а тип объекта ? Можно наверное. Но не уверен, что проверка на тип это красивое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 17:29 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
MrBitCoin А что это меняет ? Проверять потом не свойство а тип объекта ? Можно наверное. Но не уверен, что проверка на тип это красивое решение. Правда, тут будут подводные камни, все зависит от того, как ты планируешь использовать результат запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 17:38 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Любые манипуляции со значениями свойств это не задача контекста и вообещ не задача слоя доступа к данным. Делать это там это архитектурная ошибка. Этим должен заниматься слой бизнес-логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 20:01 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Но, в принципе, если так уж надо, то можно переопределить метод(ы) SaveChanges(Async) - они виртуальные, через ChangeTracker.Entries<>() получить все сущности нужного типа, которые на данный момент в контексте и выставить им нужное значение. Это если я правильно задачу понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 20:28 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
fkthat Но, в принципе, если так уж надо, то можно переопределить метод(ы) SaveChanges(Async) - они виртуальные, через ChangeTracker.Entries<>() получить все сущности нужного типа, которые на данный момент в контексте и выставить им нужное значение. Это если я правильно задачу понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 20:30 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
fkthat Любые манипуляции со значениями свойств это не задача контекста и вообещ не задача слоя доступа к данным. Делать это там это архитектурная ошибка. Этим должен заниматься слой бизнес-логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 20:31 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Shocker.Pro А ты всегда читаешь только первое сообщение? Обычно да, если ответ знаю :)) Тут, правда, проверить пришлось немного по референсу - в "старом" EF это, кажется, слегка по-другому делалось, хотя, точно уже и не вспомню. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2020, 21:51 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Если нужно при устанавливать свойство при чтении, то можно добавить обработчик для события контекста ObjectMaterialized. Что-то типа такого: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 02:10 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
Чем больше работаешь с новым EF, тем больше тоскуешь по старому EF ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 03:33 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
hVostt Чем больше работаешь с новым EF, тем больше тоскуешь по старому EF >= 6.4.0 уже можно использовать в коровских 3+ приложениях, ибо netstandard 2.1, но, могут быть проблемы с другими пакетами (напр. ASP.NET Identity), которые требуют коре-версию EF. А что не так с коревским EF? Меня пока что напрягает только отсутствие полноценного many-2-many, и еще на некоторые грабли с миграциями наступал. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 22:52 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
fkthat >= 6.4.0 уже можно использовать в коровских 3+ приложениях, ибо netstandard 2.1, но, могут быть проблемы с другими пакетами (напр. ASP.NET Identity), которые требуют коре-версию EF. Да, это очень хорошая новость для многих :) fkthat А что не так с коревским EF? Меня пока что напрягает только отсутствие полноценного many-2-many, и еще на некоторые грабли с миграциями наступал. Уровень трансляции запросов LINQ в SQL, между 6-м EF и коровским. Разница пара парсеков. Коровский прям дитя малое. До сих пор. Для примера, перевели кусочек проекта на кору, он вообще больше половины LINQ не обрабатывает, их нужно перетачивать. При чём посыл вроде верный, EF кор заставляет переносить всю логику из запросов на клиента, агрессивное кеширование, подход с разделением запросов. В то время, как EF 6 может всё. Просто из коробки может всё :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 23:22 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
hVostt Для примера, перевели кусочек проекта на кору, он вообще больше половины LINQ не обрабатывает, их нужно перетачивать. Наверное, что-то связанное с SqlFunctions или подобным? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 00:25 |
|
Одна сущность используется в двух контекстах. Как выставить свойство ?
|
|||
---|---|---|---|
#18+
fkthat hVostt Для примера, перевели кусочек проекта на кору, он вообще больше половины LINQ не обрабатывает, их нужно перетачивать. Наверное, что-то связанное с SqlFunctions или подобным? Группировки, подзапросы, фильтры по подзапросам, expanded выражения и прочее. Ну а SqlFunctions как бы уже вишенка ) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2020, 00:55 |
|
|
start [/forum/topic.php?fid=17&fpage=2&tid=1349071]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 262ms |
total: | 391ms |
0 / 0 |