ваше решение верное, вы также можете делегировать handleSubmit
родительскому компоненту, тогда, если у вас есть ошибка, вы отображаете компонент Snackbar
, в противном случае вы отображаете компонент Form
.
В вашем примере, если вы не хотите публиковать сообщение об ошибке, вы можете деструктурировать объект state
для управления свойствами, которые вы хотите отправить.
handleSubmit = (event) => {
const {email, password} = this.state;
event.preventDefault()
//api call here
onFormSubmit({email, password})
.then(() => history.push('/teams'))
.catch(e => this.setState({error: e})
}
SubSonic не так обширен как nHibernate; скорее это - прямой Активный Рекордный 1 класс на таблицу Data Access Layer.
Некоторыми функциями является инструментальное средство формирования запросов, способность выполнить хранимые процедуры и приложение лесов в ASP.net. Можно быть в порядке в течение 30 минут или меньше с крошечной кривой обучения и минимальной конфигурацией в файле Config.app.
Я всегда рекомендую замок ActiveRecord. Это - слой сверху NHibernate. Это работает отлично в обеих средах, которые Вы упомянули.
nHibernate работает на меня, но все это зависит от того, что Вы после. Много людей не хочет спускаться по полному DDD и маршруту поблочного тестирования. Они просто хотят, чтобы что-то простое отобразило их базу данных на объекты сделать код немного более хорошим. Если это так, затем посмотрите на Дозвуковой, а также возможно легче начать.
Попробуйте, дозвуковой
и можно использовать Linq2Sql ORM также.
Я использовал SubSonic приблизительно в течение года теперь для горстки приложений ASP.NET, а также приложения WinForms. Чрезвычайно легко начать с, и я еще не "поставился себя в безвыходное положение" путем выбора его - существует почти всегда некоторый способ сделать то, в чем Вы нуждаетесь, обычно легко. Я оцениваю, что это сбрило 30% нашего времени разработки. Не истинный инструмент ORM, но обеспечивает большое повышение производительности.
См. Этот Список инструментов ORM ".Net"
Он содержит все известные инструменты ORM .Net
Я предпочитаю Fluent NHibernate , который позволяет вам создавать сопоставления в C # строгого типа вместо использования обычных XML-файлов NHibernate. Он также позволяет смешивать и сопоставлять (сопоставления могут быть в коде и в XML).
Я исследовал ActiveRecord не просто потому, что, по мнению независимых серверов, он не работает так быстро, как многие другие ORM, и не имеет полной реализации Linq.
DataObjects.NET требует, чтобы все ваши сущности были производными от специальных классов, но взамен вы получите респектабельную производительность и такие плюсы, как хранение в памяти поставщики и наиболее полная реализация Linq идет.
Я провожу день, просматривая исходный код DBLinq. Мое мнение заключается в том, что он незрелый (многие функции Linq-To-SQL просто не реализованы), и я бы не рекомендовал его для производственных систем.
Так что ... если вы ' ищите бесплатный, быстрый, открытый исходный код,
Я использую аннотации NHibernate и NHibernate. Он работает хорошо - без файлов сопоставления (entity.xml). К сожалению, это необходимо в Log4net, для которого требуется крошечный файл xml.
Хабанеро , великий и мощный ORM. Это бесплатно (лицензия LGPL), работает с .net 2.0 (это очень важно для меня) и имеет мощные инструменты для создания модели из базы данных (с настраиваемыми именами классов и свойств, настраиваемой проверкой и т. Д.)
Checkout XmlDataMapper простая бесплатная ORM (лицензия LGPL), которая оставляет меньше памяти по сравнению с другими гигантами. {{1} } Предоставленный образец проекта должен быть достаточно хорош, чтобы начать работу.
Для интеграции XmlDataMapper все, что вам нужно сделать, это 4 маленьких шага