Hi,
I am trying to run a simple project using active record 2.0 with MS
Sql Server Compact Edition and getting exceptions.
Here is the code I am trying to run.
class Program
{
static void Main(string[] args)
{
string dbPath = Environment.GetFolderPath
(Environment.SpecialFolder.ApplicationData) + "\\DatabaseApp";
if(!Directory.Exists(dbPath))
Directory.CreateDirectory(dbPath);
string dbFile =dbPath + "\\Data.sdf";
if (File.Exists(dbFile))
File.Delete(dbFile);
IDictionary<string,string> properties = new
Dictionary<string,string>();
properties.Add("connection.driver_class",
"NHibernate.Driver.SqlServerCeDriver");
properties.Add("dialect",
"NHibernate.Dialect.MsSqlCeDialect");
properties.Add("connection.provider",
"NHibernate.Connection.DriverConnectionProvider");
properties.Add("proxyfactory.factory_class",
"NHibernate.ByteCode.Castle.ProxyFactoryFactory,
NHibernate.ByteCode.Castle");
properties.Add("connection.connection_string", "Data
Source="+dbFile + ";");
properties.Add("show_sql", "true");
InPlaceConfigurationSource config = new
InPlaceConfigurationSource();
config.Add(typeof(ActiveRecordBase),properties);
SqlCeEngine engine = new SqlCeEngine("Data Source=" +
dbFile);
engine.CreateDatabase();
ActiveRecordStarter.Initialize(config,
new Type[]
{
typeof(Record)
}
);
ActiveRecordStarter.CreateSchema();
Record part = new Record();
part.Create();
}
namespace DatabaseApp.TestStorage
{
[ActiveRecord]
public class Record:ActiveRecordBase<Record>
{
private Record()
{
}
public Record(string name)
{
this.Name = name;
}
[PrimaryKey]
public long RecID
{
get;
private set;
}
[Property(Unique=true) ]
public string Name
{
get;
private set;
}
}
}
Here is the exception I am getting
Castle.ActiveRecord.Framework.ActiveRecordException was unhandled
Message="Could not perform Create for Record"
Source="Castle.ActiveRecord"
StackTrace:
at Castle.ActiveRecord.ActiveRecordBase.InternalCreate(Object
instance, Boolean flush) in c:\daten\dev\External\Castle
\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework
\ActiveRecordBase.cs:line 145
at Castle.ActiveRecord.ActiveRecordBase.Create(Object instance)
in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord
\Framework\ActiveRecordBase.cs:line 100
at Castle.ActiveRecord.ActiveRecordBase.Create() in c:\daten\dev
\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework
\ActiveRecordBase.cs:line 1474
at DatabaseApp.Program.Main(String[] args) in C:\Dev\CSharp
\DatabaseApp\Program.cs:line 56
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: NHibernate.AssertionFailure
Message="null identifier"
Source="NHibernate"
StackTrace:
at NHibernate.Engine.EntityKey..ctor(Object identifier,
String rootEntityName, String entityName, IType identifierType,
Boolean batchLoadable, ISessionFactoryImplementor factory, EntityMode
entityMode)
at NHibernate.Engine.EntityKey..ctor(Object id,
IEntityPersister persister, EntityMode entityMode)
at
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate
(Object entity, EntityKey key, IEntityPersister persister, Boolean
useIdentityColumn, Object anything, IEventSource source, Boolean
requiresImmediateIdAccess)
at
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object
entity, Object id, IEntityPersister persister, Boolean
useIdentityColumn, Object anything, IEventSource source, Boolean
requiresImmediateIdAccess)
at
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId
(Object entity, String entityName, Object anything, IEventSource
source, Boolean requiresImmediateIdAccess)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId
(SaveOrUpdateEvent event)
at
NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId
(SaveOrUpdateEvent event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient
(SaveOrUpdateEvent event)
at
NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate
(SaveOrUpdateEvent event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate
(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent
event)
at NHibernate.Impl.SessionImpl.Save(Object obj)
at Castle.ActiveRecord.ActiveRecordBase.InternalCreate
(Object instance, Boolean flush) in c:\daten\dev\External\Castle
\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework
\ActiveRecordBase.cs:line 127
InnerException:
Sql getting generated
NHibernate: INSERT INTO Record (Name) VALUES (@p0);@p0 = 'test'
NHibernate: select @@IDENTITY
Any idea why I am getting this exception?
Some more info
Setting Record.RecID to [PrimaryKey(PrimaryKeyType.Assigned) ] works
but none of the Auto generators work.
Thank you
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---