protected new void CreateProduct()
        {
            var product = new Product("PRT") {Name = "Product", Description = "설명입니다."};
            product.AddMetadata("a", new MetadataValue("A"));
            product.AddMetadata("b", new MetadataValue("B"));
            product.AddLocale(new CultureInfo("en"), new ProductLocale {Name = "Product"});
            product.AddLocale(new CultureInfo("ko"), new ProductLocale {Name = "제품"});

            Repository<Product>.SaveOrUpdate(product);
        }
        public void ProductTestByUnitOfWork()
        {
            var product = new Product("PRT_1") {Name = "Product", Description = "설명입니다."};
            product.AddMetadata("a", new MetadataValue("A"));
            product.AddMetadata("b", new MetadataValue("B"));
            product.AddLocale(new CultureInfo("en"), new ProductLocale {Name = "Product1"});
            product.AddLocale(new CultureInfo("ko"), new ProductLocale {Name = "제품1"});

            Repository<Product>.SaveOrUpdate(product);
            UnitOfWork.Current.TransactionalFlush();
            UnitOfWork.Current.Clear();

            var loaded = Repository<Product>.Get(product.Id);
            Assert.AreEqual(product, loaded);

            loaded.LocaleMap.Count.Should().Be(2);
        }
        public void ProductTestByHybrid()
        {
            var product = new Product("PRT_2") {Name = "Product2", Description = "설명입니다"};
            product.AddMetadata("a", new MetadataValue("A"));
            product.AddMetadata("b", new MetadataValue("B"));
            product.AddLocale(new CultureInfo("en"), new ProductLocale {Name = "Product2"});
            product.AddLocale(new CultureInfo("ko"), new ProductLocale {Name = "제품2"});

            new PersistenceSpecification<Product>(UnitOfWork.CurrentSession)
                .VerifyTheMappings(product);
        }