|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Здравствуйте. Подскажите пожалуйста, как правильно реализовать фабрику классов в EF. Описание доменной структуры EF Code First: Имеется класс Main, в котором реализована связь один ко многим к классам A B C. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Классы с ForeingKey Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Теперь собственно говоря сам вопрос. Как реализовать вывод свойств ICollection (As, Bs, Cs) класса Main, через один общий метод или свойство? Нормально объяснил? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2014, 08:23 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
нет... вопрос и задача неясны... приведенный пример наводит на печальные мысли... фабрика как-то выбивается из примера(задачи)... абстрактный класс интерфейс...? почитать про наследование(inheritance) в (with) EF [Code First]?... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2014, 12:18 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Почитал как вы говорили про наследования. Но вопрос все равно остался. Постараюсь еще раз объяснить суть задачи, со стороны интерфейса. Имеется два DataGridView: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Задача, которую я пытаюсь решить заключается: как при помощи одного биндинга , выводить информацию во второй DataGridView, любой из трех ICollection? ItemSourse = " As_Bs_Cs " ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 12:42 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Nechto, А как понять что выводить во второго гриде: все А, все B, или все С? На основе чего такой вывод делается? Ведь в каждой записи Main есть все три коллекции? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 12:48 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
hVosttNechto, А как понять что выводить во второго гриде: все А, все B, или все С? Любая запись в Main, может имеет только одну из трех коллекций, остальные две будут пустые. К примеру: Код: plaintext 1. 2. 3. 4. 5.
hVosttNechto, На основе чего такой вывод делается? Ведь в каждой записи Main есть все три коллекции? Вот мне и надо сделать своего рода объединяющее свойство которое бы выводила коллекции в таком виде: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 13:03 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Nechto, А, тогда можно (и скорее всего даже нужно) реализовать это следующим образом: 1. Вместо одного Main класса, базовый MainBase и три наследника MainA, MainB, MainC 2. Каждый из наследников ссылается только на 1 свою коллекцию: As, Bs, Cs. 3. Берёшь из базы коллекцию MainBase и суёшь в первый грид. 4. Биндишь второй грид на вычисляемое свойство-коллекцию. Пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Классы с ForeingKey Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Маппишь второй грид к свойству Foregns. Я без понятия что ты собрался выводить, и главное КАК, если A,B,C -- разные классы с разными набором свойств, так что и вывел object, может делать ToString хотябы. Незнаю в общем. Но суть такая. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 13:18 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Может я что-то не понял. Но при такой реализации, у меня теперь три Main для первого DataGridView. А нужен то один. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 14:33 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
NechtoМожет я что-то не понял. Но при такой реализации, у меня теперь три Main для первого DataGridView. А нужен то один. Нет, один Main и три его наследника. Из EF получаешь Main: Код: c# 1. 2. 3.
Добавляешь в базу конкретные Main: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
В общем, это самое простое решение. Кроме того, исходя из твоей задачи, что каждый Main должен содержать лишь одну из трёх коллекций, это самый очевидно правильный способ решения, так как технически не допускает ошибки, и ты точно знаешь, что у тебя за Main (A,B или C). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 14:47 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
А этот пример, который вы привели выше, будет работать с Code First? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 14:51 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
NechtoА этот пример, который вы привели выше, будет работать с Code First? Именно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 14:56 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Спасибо за помощь, сейчас буду пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2014, 06:42 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Что то не выходи. Делаю миграцию Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
По этой структуре Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Почему-то генерируется это поле Discriminator. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2014, 10:16 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
NechtoПочему-то генерируется это поле Discriminator. Всё верно, с помощью этого поля EF определяет что там MainA, MainB или MainC. Техническое поле, оно необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2014, 11:15 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Выходит что без этого поля не обойтись, я правильно понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2014, 12:28 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
NechtoВыходит что без этого поля не обойтись, я правильно понимаю. Без дополнительного поля нет. EF с помощью этого поля реализует наследование. Тебе-то какая разница? Ну добавилось поле, от этого ни жарко, ни холодно. Зато задача решена. Если есть сильное желание, можно изменить тип и название этого поля, но обычно это нафиг не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2014, 13:39 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
hVosttNechtoВыходит что без этого поля не обойтись, я правильно понимаю. Без дополнительного поля нет. EF с помощью этого поля реализует наследование. Тебе-то какая разница? Ну добавилось поле, от этого ни жарко, ни холодно. Зато задача решена. Если есть сильное желание, можно изменить тип и название этого поля, но обычно это нафиг не нужно. НУ так то оно так. Спасибо за грамотное решения задачи. Вот еще поделюсь своим первым вариантом, который я сделал до открытия этой темы. Так для полноты темы. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2014, 14:12 |
|
c# фабрика классов EF Code First
|
|||
---|---|---|---|
#18+
Возобновлю тему, появился вопрос. Использую данный пример в моем приложении. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Подскажите пожалуйста, почему при запросе на прямую Main , у меня Foreigns пустой? Код: c# 1.
Не пустой он только в том случае, если использовать метод Load() Код: c# 1. 2. 3. 4.
Почему так? Ведь там есть служебное поле Discriminator. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 06:47 |
|
|
start [/forum/search_topic.php?author=Andrey001111&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
185ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 577ms |
total: | 894ms |
0 / 0 |