I ran into a pretty weird issue, I tried to use some of the .NET ORM’s
with
IronRuby.
I haven’t investigated with the debugger turned on yet but here’s what I
observed
I tried this with ActiveRecord from Castle, SubSonic and LightSpeed.
Linq2Sql doesn’t have a problem.
What the first 3 ORM’s have in common is that I can use the types in the
actual ORM library. All of those ORM’s require you to have a generic
base
class.
If I include other types in the assembly (non generic base classes) then
I
can just use those classes.
When I create a type with a generic base class that is defined in the
same
assembly I can use that class in IronRuby
For SubSonic a Customer class could look like:
public class Customer : ActiveRecord{
// model code here
}
The output from the console session that shows the behavior. I tried a
lot
of different approaches but it always boils down to the same error.
So, the Customer class was generated by SubSonic and is contained in
DataAccess.Subsonic.dll? Do you get the same results by leaving out the
include and saying
I got basically the same result when trying to use a SubSonic-generated
DLL
from IronPython. The Assembly.GetTypes function wasn’t able to resolve
the
generated classes because “Could not load file or assembly ‘SubSonic,
Version=2.0.3.0, Culture=neutral, PublicKeyToken=eadb47849839a332’ or
one of
its dependencies”
The problem went away when I copied the SubSonic DLLs into the same
directory as the executable.
Where is the assembly that contains Customer? Is that "
DataAccess.SubSonic.dll"?
BTW: ActiveRecord (from Castle) does not require you to inherit
ActiveRecordBase. You can just mark up your classes with attributes and
use
ActiveRecordMediator for all the CRUD.
Yep the same thing happens, and i can elaborate on that
If it’s an assembly which only contains ie. ActiveRecord types then i
can’t
even execute include DataAccess::SubSonic
I tried many variations on the theme. Tried with signed assemblies vs
unsigned ones, tried different syntax structures, tried it in the
console
and in a file.