EF Code First - воссоздать базу данных при изменении модели

В настоящее время я работаю над проектом, который использует EF Code First с POCO. У меня есть 5 POCO, которые пока зависят от POCO «User».

POCO «User» должен ссылаться на мою уже существующую таблицу MemberShip «aspnet_Users» (которую я отображаю в методе OnModelCreating контекста DbContext).

Проблема в том, что я хочу воспользоваться функцией " - лучший способ читать UDT из базы данных с помощью Java? Я думал, что знаю все о UDT и JDBC, пока кто-то из SO не указал некоторые детали Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc мне. Суть этой подсказки была (от ...

Я думал, что знаю все о UDT и JDBC, пока кто-то из SO не указал некоторые детали Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc для меня. Суть этой подсказки была (из SQLInput):

Входной поток, содержащий поток

Мне казалось, что я знаю все о UDT и JDBC, пока кто-то из SO не указал на некоторые детали Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc мне. Суть этой подсказки была (из SQLInput):

Входной поток, содержащий поток

Мне казалось, что я знаю все о UDT и JDBC, пока кто-то из SO не указал некоторые подробности документации Javadoc java.sql.SQLInput и java.sql.SQLData JavaDoc мне. Суть этой подсказки была (из SQLInput):

Входной поток, содержащий поток значений, представляющих экземпляр структурированный тип SQL или SQL особый тип. Этот интерфейс, используемый только для настраиваемого сопоставления, используется водитель за кадром, и программист никогда не вызывает напрямую Методы SQLInput.

Это полная противоположность тому, что я привык делать (что также используется и стабильно в продуктивных системах при использовании с драйвером Oracle JDBC): реализовать SQLData и предоставить эту реализацию в настраиваемом сопоставлении с

ResultSet.getObject(int index, Map mapping)

Драйвер JDBC затем обратится к моему настраиваемому типу, используя метод

SQLData.readSQL(SQLInput stream, String typeName)

. Я реализую этот метод и читаю каждое поле из потока SQLInput . В конце концов, getObject () вернет правильно инициализированный экземпляр моей реализации SQLData , содержащий все данные из UDT.

Мне это кажется идеальным способом реализации такое нестандартное отображение. Веские причины для этого:

  • Я могу использовать стандартный API вместо использования классов, зависящих от поставщика, таких как oracle.sql.STRUCT и т. Д.
  • Я могу сгенерировать исходный код из своих UDT с соответствующими геттерами / сеттерами и другими свойствами

Мои вопросы :

  • Что вы думаете о моем подходе к реализации SQLData ? Насколько это жизнеспособно, даже если в документации Javadoc указано иное?
  • Какие еще способы чтения UDT в Java вам известны? Например, что делает Spring? что делает Hibernate? Что делает JPA? Чем вы занимаетесь?

Приложение :

Поддержка UDT и интеграция с хранимыми процедурами - одна из основных функций jOOQ . jOOQ стремится скрыть более сложные «факты JDBC» от ​​клиентского кода, не скрывая при этом основную архитектуру базы данных. Если у вас есть вопросы, подобные приведенным выше, jOOQ может дать вам ответ.

7
задан Lukas Eder 23 July 2012 в 11:56
поделиться