Here is the error I get
CookBook.Tests.CategoryRepository_Fixture.Can_update_category: FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. ----> FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. ----> System.ArgumentException : Cannot create an instance of FluentNHibernate.Automapping.AutoMapping`1[CookBook.Repository.Repository`1[T]] because Type.ContainsGenericParameters is true.
here is my Category object
public class Category { public virtual int Id { get; set; } public virtual string Name { get; set; } }
here is my test class
[TestFixture] class CategoryRepository_Fixture { private ISessionFactory _sessionFactory; private RecipeConfiguration _configuration; private readonly Category[] _categories = new[] { new Category{Name="Dinner"}, new Category{Name="Breakfast"}, new Category{Name="Lunch"}, new Category{Name="Breakfast"} }; private void CreateInitialData() { using (ISession session = _sessionFactory.OpenSession()) using (ITransaction transaction = session.BeginTransaction()) { foreach (var category in _categories) { session.Save(category); } transaction.Commit(); } } [TestFixtureSetUp] public void TestFixtureSetUp() { _configuration = new RecipeConfiguration(); _sessionFactory = Fluently.Configure() .Database(MsSqlCeConfiguration.Standard.ShowSql().ConnectionString("Data Source=CookBook.sdf")) .Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<Category>(_configuration))) .ExposeConfiguration(config => new SchemaExport(config).Execute(false, true, false)) .BuildSessionFactory(); } [SetUp] public void SetupContext() { CreateInitialData(); } [Test] public void Can_add_new_category() { Category cat = new Category { Name = "Dessert" }; IRepository<Category> repository = new Repository<Category>(); repository.Add(cat); using (ISession session = _sessionFactory.OpenSession()) { var fromDb = session.Get<Category>(cat.Id); Assert.IsNotNull(fromDb); Assert.AreNotSame(cat, fromDb); Assert.AreEqual(cat.Name, fromDb.Name); } }
Here is the repository class
public class Repository<T> : IRepository<T> {
What am I doing wrong? Is it possible to use a shared repository? because I have about 4 objects that use the same repository.
source share