Вам нужно создать функцию без параметров, которые вы можете использовать в качестве команды:
b = Button(admin, text='as', command=lambda: button('hey'))
См. раздел «Передача аргументов в обратные вызовы» в этом документе .
В ORM, классы/объекты в приложении отображаются на таблицах базы данных и операциях для персистентности, иногда автоволшебно.
В DAL, операции базы данных скрыты позади фасада кода.
Любой объект ориентировал DAL, соединяющийся с любой системой хранения, которая не сохраняет реализации объектов ORM. ORM, как обычно понимают, означает, что чему-то нравится, в спящем режиме, но важной вещью является обработка несоответствий импеданса.
[Расширенный]
На уровне данных, импеданс несоответствия происходят при отображении данных одного типа (реляционного) в данные другого (OO).
, Например, как сколько раз Вы видели строку ниже в Вашем DAL?
db.AddInParameter(dbCommand, "Name", DbType.String, name);
Или другая сторона
customerId = Convert.ToInt64(dr["CustomerID"].ToString());
Много проблем подходят при отображении примитивных типов данных.
На уровне объектов, Ваш DAL должен возвращать структуры, которые Вы намереваетесь использовать. Будьте этим своего рода бизнес-объект или просто набор необработанных данных. И Ваш собственный DAL и ORM должны обработать это.
На уровне дизайна, объекты, которые Вы создаете, являются отражающими из Ваших хранивших данных. Таким образом, структурные различия могут произойти. Они также обрабатываются для Вас в решениях ORM, но Вы были бы вынуждены сделать то же в DAL. Например, в Вашем коде OO было бы хорошо реализовать надлежащее наследование, но это не делает тайный легко во что-то реляционное.
я просто хотел указать, что ORM является термином, введенным для продвижения продуктов, которые автоматизируют многое из того, что необходимо было бы уже сделать в DAL. Решения ORM сделают жизнь легче и предложат большое количество качества/выигрышей в производительности. Но это не изменяет то, что один из главных компонентов Вашего DAL создает Ваш собственный ORM.
Я думаю, что ORM способен к отображению любого набора объектов к реляционной базе данных; тогда как DAL характерен для Вашего приложения и вероятно не мог естественно быть расширен для поддержки других объектов.
Не только, что, но и ORM конкретно касается в отображение классы к/от объектам базы данных, в то время как DAL может просто быть способом для Вас получить доступ к данным в базе данных без любого отображения.
ORM не существовал, когда я начал программировать. То, когда первый ORMs вышел, они были внешними инструментами, раньше создавало DAL. Теперь дни, DAL и ORM смешались. Вот почему много разработчиков использует термины попеременно.
самым известным примером ORM, который функционирует как DAL, является NHibernate. Другие примеры являются Дозвуковыми и CSLA.NET. Это все инструменты.NET. IIRC, инструменты ORM, запущенные в мире Java. Другие технологические стопки затем скопировали то, что сделал Java.