Ricardo,
Thank you, very much. That worked! Additionally, in case any other newbie
is reading this later, this page (NHibernate 3.2 mapping sample)
<http://lycog.com/programming/nhibernate-32-mapping-code-basic-mapping/> has
some additional info that is very helpful. In particular if all the models
and mappings are in a single assembly, rather than specifying each mapping
this appears to work.
public InMemoryDatabaseTest(Assembly assemblyContainingMapping) {
try {
if (Configuration == null) {
Configuration = new Configuration()
.SetProperty(NHibernate.Cfg.Environment.ConnectionProvider,
"NHibernate.Connection.DriverConnectionProvider")
.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver,
typeof(SQLite20Driver).AssemblyQualifiedName)
.SetProperty(NHibernate.Cfg.Environment.ConnectionString, "Data
Source=:memory:;Version=3;New=True;")
.SetProperty(NHibernate.Cfg.Environment.ShowSql, "false")
.SetProperty(NHibernate.Cfg.Environment.Dialect,
typeof(SQLiteDialect).AssemblyQualifiedName)
.SetProperty(NHibernate.Cfg.Environment.ReleaseConnections,
"on_close")
.SetProperty(NHibernate.Cfg.Environment.MaxFetchDepth, "1")
.AddAssembly(assemblyContainingMapping);
//mapper = new ModelMapper();
//mapper.AddMapping<ModelMap>();
//mapper.AddMapping<NumberedEntityMap>();
//mapper.AddMapping<PersonMap>();
mapper = new ModelMapper();
mapper.AddMappings(assemblyContainingMapping.GetExportedTypes());
mappings = mapper.CompileMappingForAllExplicitlyAddedEntities();
Configuration.AddDeserializedMapping(mappings, null);
SessionFactory = Configuration.BuildSessionFactory();
}
session = SessionFactory.OpenSession();
connection = session.Connection;
new SchemaExport(Configuration)
.SetOutputFile(".\\sqlite.sql")
.Execute(true, true, false, connection, Console.Out);
} catch (Exception ex) {
throw;
}
}
Honestly the part that confused me was the bit about
.AddAssembly(assemblyContainingMapping). I'd expected that to take care of
the mapper and mappings part. Thank you again, Ricardo!
On Thursday, June 26, 2014 6:33:58 PM UTC-5, Ricardo Peres wrote:
>
> Try this before building the session factory:
>
> var mapper = new ModelMapper();
> mapper.AddMapping<ModelMap>();
> var mappings = mapper.CompileMappingForAllExplicitlyAddedEntities();
> Configuration.AddDeserializedMapping(mappings, null);
>
> RP
>
>
> On Thursday, June 26, 2014 10:57:53 PM UTC+1, Michael Murphy wrote:
>>
>> Hello all,
>>
>> I've been using Castle ActiveRecord and am interested in starting a new
>> project using just NHibernate. I'd like to use the latest stable release
>> which appears to be v3.3.3.4001. I'd like to use the Mapping ByCode
>> feature since that is similar to the Castle ActiveRecord that I have been
>> working with and seems to offer me the quickest approach to working. I've
>> created a simple class
>>
>> public class Model {
>> public virtual long ID { get; set; }
>>
>> }
>>
>> public class ModelMap : ClassMapping<Model> {
>> public ModelMap() {
>> Id(x => x.ID, m => m.Generator(Generators.Identity));
>> Lazy(false);
>> }
>> }
>>
>>
>> i've created a simple MSTest Unit Test
>> using SyLogis.Models;
>> using Microsoft.VisualStudio.TestTools.UnitTesting;
>> namespace TestProject1
>> {
>> [TestClass()]
>> public class ModelTest {
>>
>> static InMemoryDatabaseTest imdb = null;
>>
>>
>> [ClassInitialize()]
>> public static void MyClassInitialize(TestContext testContext) {
>> System.Reflection.Assembly assembly =
>> typeof(NumberedEntityMap).Assembly;
>> imdb = new InMemoryDatabaseTest(assembly);
>> }
>>
>> [TestMethod()]
>> public void ID_Test() {
>> Model target = new Model(); // TODO: Initialize to an appropriate
>> value
>> long expected = 1; // TODO: Initialize to an appropriate value
>> long actual;
>> target.ID = expected;
>> actual = target.ID;
>> imdb.session.Save(target);
>> target = null;
>> target = imdb.session.Get<Model>(expected);
>> Assert.AreEqual<long>(expected, target.ID);
>> }
>> }
>> }
>>
>> and here is the inmemory piece
>> using System;
>> using System.Collections.Generic;
>> using System.Linq;
>> using System.Text;
>> using NHibernate;
>> using NHibernate.Cfg;
>> using NHibernate.Tool.hbm2ddl;
>> using System.Reflection;
>> using System.Data;
>>
>>
>> namespace TestProject1 {
>>
>> public class InMemoryDatabaseTest : IDisposable {
>>
>> public static Configuration Configuration;
>> public static ISessionFactory SessionFactory;
>> public ISession session;
>> public IDbConnection connection;
>>
>> public InMemoryDatabaseTest(Assembly assemblyContainingMapping) {
>> try {
>> if (Configuration == null) {
>> Configuration = new Configuration()
>> .SetProperty(NHibernate.Cfg.Environment.ConnectionProvider,
>> "NHibernate.Connection.DriverConnectionProvider")
>> .SetProperty(NHibernate.Cfg.Environment.ConnectionDriver,
>> typeof(SQLite20Driver).AssemblyQualifiedName)
>> .SetProperty(NHibernate.Cfg.Environment.ConnectionString,
>> "Data Source=:memory:;Version=3;New=True;")
>> .SetProperty(NHibernate.Cfg.Environment.ShowSql, "false")
>> .SetProperty(NHibernate.Cfg.Environment.Dialect,
>> typeof(SQLiteDialect).AssemblyQualifiedName)
>> .SetProperty(NHibernate.Cfg.Environment.ReleaseConnections,
>> "on_close")
>> .SetProperty(NHibernate.Cfg.Environment.MaxFetchDepth, "1")
>> .AddAssembly(assemblyContainingMapping);
>>
>> SessionFactory = Configuration.BuildSessionFactory();
>> }
>>
>> session = SessionFactory.OpenSession();
>> connection = session.Connection;
>> new SchemaExport(Configuration)
>> .SetOutputFile(".\\sqlite.sql")
>> .Execute(true, true, false, connection, Console.Out);
>>
>> } catch (Exception ex) {
>> throw;
>> }
>> }
>>
>>
>> public void Dispose() {
>> session.Dispose();
>> }
>> }
>> }
>>
>>
>> when i run the test it goes fine until it gets to the Save step at which
>> point it throws an exception and the test details says there's no
>> persister. I'm not certain what I'm doing wrong. I don't have any hbm.xml
>> files to add as Embedded Resources (but I thought that was the point of
>> Mapping ByCode). I would appreciate any suggestions.
>>
>> Also all the NHibernate Getting Started samples I can find are for v3.1.0
>> of NHibernate or even more often v2.1.x or similar. Are there any Getting
>> Started samples using v3.3.3? If anyone has a working Visual Studio
>> Solution using NHibernate v3.3.3 and could send it to me or post it
>> somewhere, that would be much appreciated. Thanks in advance. Have a
>> great day!
>>
>>
>>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.