This is a migrated thread and some comments may be shown as answers.

Cannot Find Persistent Class

2 Answers 130 Views
Getting Started
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Michael Luna
Top achievements
Rank 1
Michael Luna asked on 28 Sep 2009, 06:12 PM
I am currently building a multi-tiered application and am at the DAL/BL stage.  I have tables in a database that I want to represent as b.o.'s, but all database access I want to handle through stored proc's.  So I want to use the ORM to map out b.o.'s for each of my tables, but I want to separately use the ORM to also generate methods that call the stored proc's I need.  I did all this last week and everything worked fine.

I later decided I wanted the b.o.'s in a separate project alongside the business layer, calling it the "value objects" project.  I killed off all the b.o.'s from the DAL and re-used OpenAccess to code-gen them in the VO project.  I then added a reference from the DAL to the VO's.  It seems pretty simple to me.  Yet, now when I try to run my unit tests I get the following error:

Telerik.OpenAccess.Exceptions.InvalidOperationException: No persistent class could be found.
To define persistent classes use the [Persistent] attribute at the class level.
If multiple projects are used additional references must be made in the configuration file.
To update the required references use 'Update Config References' from the OpenAccess menu.


This exception occurs when I try to get the scope at the top of every one of my stored proc accessor methods.  Here is one example:

        public bool RetrieveAttributes(EdiReceiveSender sender) 
        { 
            IObjectScope scope = Database.Get("connFfops").GetObjectScope(); 
            IQueryResult retval =  
                StoredProcedures.RetrieveAttributes(scope, sender.UserName, sender.ForwarderCode, sender.Password); 
 
            return false; 
        } 



The "EdiReceiveSender" is a ORM-generated class in my v.o. project.  In my unit test I instantiate one, fill it, then pass it off to this method in the DAL.  Again, all this worked just fine when my b.o.'s and sproc accessors were in the DAL together.

I'd greatly appreciate any help.



2 Answers, 1 is accepted

Sort by
0
Michael Luna
Top achievements
Rank 1
answered on 28 Sep 2009, 09:57 PM
I don't know what changed, but for some reason this error just stopped coming up.  When I run my tests now, they run fine.  I did not change anything that I know of.  Strange.

So as Gilda Radner used to say, "NEVER MIND!"
0
Damyan Bogoev
Telerik team
answered on 30 Sep 2009, 05:21 PM
Hello Michael Luna,

The error that you reported appears when there are no persistent classes in the assembly, but the settings Enhancing and Update Database are set to true. These settings are added to the project file by the Enable Project wizard. When Enhancing is set to true, the Enhancer, used by Telerik OpenAccess ORM tries to read and process the compiled .NET assemblies for adding persistence capability. Update Database means that the VSchema tool from OpenAccess is started during compilation and it creates or updates the database schema so it resembles the current persistent model. In order to avoid the error in your case, you should set these settings to false.

Greetings,
Damyan Bogoev
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
Tags
Getting Started
Asked by
Michael Luna
Top achievements
Rank 1
Answers by
Michael Luna
Top achievements
Rank 1
Damyan Bogoev
Telerik team
Share this question
or