http://www.perlmonks.org?node_id=557434


in reply to Re: Class::DBI vs. DBIx::Class
in thread Class::DBI vs. DBIx::Class

Now I understand that DBIx::Class is more flexible than Class::DBI! On the other hand, this comes at the price of longer code for simple tasks, e.g., for inserting into a table 'Person', one would use
# using DBIx::Class: $schema->resultset('Person')->new({FirstName=>'Joe'})->insert(); # using Class::DBI: DB::Person->insert({FirstName=>'Joe'});
Nevertheless, the greater flexibility motivated me to try DBIx::Class, too. What still bothers me is that
package DB::Person; use base 'DBIx::Class'; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('T_PERSON'); __PACKAGE__->add_columns(qw[PersonId FirstName]); __PACKAGE__->set_primary_key('PersonId'); package DB; use base 'DBIx::Class::Schema'; __PACKAGE__->load_classes(qw[Person]);
fails with Can't locate object method "result_source_instance" via package "DB/Person" (perhaps you forgot to load "DB/Person"?) at c:/Perl/site/lib/DBIx/Class/Schema.pm line 75. If I put the definition of DB::Person into DB/Person.pm, it works, but is far less elegant/compact. Is there a smarter solution?