You must include Facility in the ActiveRecordStarter.Initialize(...) -Markus
2009/8/12 Chris Sims <[email protected]> > > I am writing a program that stores data in one database and references > a medical records system via an API I am writing using AR. Currently, > the API and the scheduling system are compiled into one program. I > have abstracted the ActiveRecord class and created an > AhtActiveRecordBase class in which I override the update/save/delete > functions to ensure we cannot write back to our EMR. > This part works fine. When I only connect to one DB it works fine, the > issue comes when I use multiple configuration sections to connect to > more than one db. Whenever I access the EMR db after adding the > database, > > I get a System.Collections.Generic.KeyNotFoundException exception. I > am attaching the code and the stack trace in hopes that someone can > point me in the right direction. I am using the daily build for this. > > Thank you for your help! > Chris Sims > Senior Software Specialist > NHS Management, LLC. > > Config File: > <activerecord> > <config> > <add key="connection.driver_class" > value="NHibernate.Driver.SqlClientDriver" /> > <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect" / > > > <add key="connection.provider" > value="NHibernate.Connection.DriverConnectionProvider" /> > <add key="connection.connection_string_name" value="main" /> > <add value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, > NHibernate.ByteCode.Castle" key="proxyfactory.factory_class" /> > <add key="connection.isolation" value="ReadUncommitted" /> > </config> > > <config type="Scheduler.Core.AhtActiveRecordBase`1, > Scheduler.Core"> > <add key="connection.driver_class" > value="NHibernate.Driver.SqlClientDriver" /> > <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect" / > > > <add key="connection.provider" > value="NHibernate.Connection.DriverConnectionProvider" /> > <add key="connection.connection_string_name" value="AHT" /> > <add value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, > NHibernate.ByteCode.Castle" key="proxyfactory.factory_class" /> > </config> > </activerecord> > > Init Statement: > ActiveRecordStarter.Initialize(ActiveRecordSectionHandler.Instance > //various types omitted from code > listing for brevity > , typeof(ServiceProviderType) > , typeof(ResidentServiceProviders) > , typeof(AhtActiveRecordBase<>) > ); > > Error Statement: > List<Facility> facs = new List<Facility>(Facility.FindAll()); > > AhtActiveRecordBase<>: > public abstract class AhtActiveRecordBase<T> : ActiveRecordBase<T> > { > #region Force read only, remove Save/Update/Create/Delete > functionality > public override void Save() > {} > public override void SaveAndFlush() > {} > public override void Delete() > {} > public override void DeleteAndFlush() > {} > public override void Update() > {} > public override void UpdateAndFlush() > {} > public override void Create() > {} > public override void CreateAndFlush() > {} > #endregion > } > > Facility > [ActiveRecord("FacilityList", Schema="NHS", > Access=PropertyAccess.NosetterCamelcase)] > public partial class Facility : AhtActiveRecordBase<Facility> > { // large amount of fields/properties ommitted for brevity } > > The Exception > System.Collections.Generic.KeyNotFoundException was unhandled > Message="The given key was not present in the dictionary." > Source="mscorlib" > StackTrace: > at System.ThrowHelper.ThrowKeyNotFoundException() > at System.Collections.Generic.Dictionary`2.get_Item(TKey key) > at NHibernate.Cfg.Configuration.Mapping.GetPersistentClass > (String className) > at NHibernate.Cfg.Configuration.Mapping.GetIdentifierType > (String className) > at NHibernate.Type.EntityType.GetIdentifierType(IMapping > factory) > at NHibernate.Type.EntityType.GetIdentifierOrUniqueKeyType > (IMapping factory) > at NHibernate.Type.ManyToOneType.GetColumnSpan(IMapping > mapping) > at NHibernate.Mapping.SimpleValue.IsValid(IMapping mapping) > at NHibernate.Mapping.ToOne.IsValid(IMapping mapping) > at NHibernate.Mapping.Property.IsValid(IMapping mapping) > at NHibernate.Mapping.PersistentClass.Validate(IMapping > mapping) > at NHibernate.Mapping.RootClass.Validate(IMapping mapping) > at NHibernate.Cfg.Configuration.Validate() > at NHibernate.Cfg.Configuration.BuildSessionFactory() > at > Castle.ActiveRecord.Framework.SessionFactoryHolder.GetSessionFactory > (Type type) in c:\castle\ActiveRecord\Castle.ActiveRecord\Framework > \SessionFactoryHolder.cs:line 135 > at > Castle.ActiveRecord.Framework.SessionFactoryHolder.CreateScopeSession > (Type type) in c:\castle\ActiveRecord\Castle.ActiveRecord\Framework > \SessionFactoryHolder.cs:line 296 > at > Castle.ActiveRecord.Framework.SessionFactoryHolder.CreateSession(Type > type) in c:\castle\ActiveRecord\Castle.ActiveRecord\Framework > \SessionFactoryHolder.cs:line 182 > at Castle.ActiveRecord.ActiveRecordBase.FindAll(Type > targetType, Order[] orders, ICriterion[] criteria) in c:\castle > \ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordBase.cs:line > 997 > at Castle.ActiveRecord.ActiveRecordBase.FindAll(Type > targetType) in c:\castle\ActiveRecord\Castle.ActiveRecord\Framework > \ActiveRecordBase.cs:line 982 > at Castle.ActiveRecord.ActiveRecordBase`1.FindAll() in c:\castle > \ActiveRecord\Castle.ActiveRecord\Framework > \ActiveRecordBase.Generic.cs:line 341 > at Scheduler.BuildSchedule.Program.Main(String[] args) in C: > \SharpProjects\EnhancedScheduler\Scheduler.BuildSchedule > \Program.cs:line 107 > at System.AppDomain._nExecuteAssembly(Assembly assembly, String > [] args) > at System.AppDomain.ExecuteAssembly(String assemblyFile, > Evidence assemblySecurity, String[] args) > at > Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() > at System.Threading.ThreadHelper.ThreadStart_Context(Object > state) > at System.Threading.ExecutionContext.Run(ExecutionContext > executionContext, ContextCallback callback, Object state) > at System.Threading.ThreadHelper.ThreadStart() > InnerException: > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
