S # arp Architecture many-to-many substituições de mapeamento não funciona
-
08-07-2019 - |
Pergunta
Eu tentei praticamente tudo para obter M: M mapeamentos que trabalham em S # arp Architecture. Infelizmente, o projeto de exemplo Adamastor não tem uma M:. M override
Tudo funcionou bem no meu projeto antes de converter a S # arp e sua escolha de mapeamento automático de Fluent NHibernate. I como a auto-mapeamento, é bom, no entanto as substituições não parecem registo.
Tudo parece funcionar na memória e em testes, no entanto, quando cometer dados para um banco de dados nada é inserido no meu M:. Tabela de referência M
Se tomarmos o exemplo simples de uma categoria pode ter muitos produtos e um produto pode ser em muitas categorias, teríamos uma tabela chamada CategoryProduct (eu não gosto de pluralização) que tem colunas category_id e product_id.
modelo de persistência Meu Auto gera como tal:
return AutoPersistenceModel
.MapEntitiesFromAssemblyOf<Category>()
.Where(GetAutoMappingFilter)
.ConventionDiscovery.Setup(GetConventions())
.WithSetup(GetSetup())
.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
substituir mapeamento para a categoria olhares como tal:
public class CategoryMap : IAutoMappingOverride<Category>
{
public void Override(AutoMap<Category> mapping)
{
mapping.Id(x => x.Id, "Id")
.WithUnsavedValue(0)
.GeneratedBy.Identity();
mapping.Map(x => x.Name).WithLengthOf(50);
mapping.Map(x => x.Depth);
mapping.HasMany<Category>(x => x.Children)
.Cascade.All()
.KeyColumnNames.Add("Parent_id")
.AsBag()
.LazyLoad();
mapping.HasManyToMany<Posting>(x => x.Products)
.WithTableName("CategoryProduct")
.WithParentKeyColumn("Category_id")
.WithChildKeyColumn("Product_id")
.Cascade.All()
.AsBag();
}
}
E o produto tem uma substituição de mapeamento como tal:
public class ProductMap : IAutoMappingOverride<Product>
{
public void Override(AutoMap<Product> mapping)
{
mapping.Id(x => x.Id, "Id")
.WithUnsavedValue(0)
.GeneratedBy.Identity();
mapping.Map(x => x.Title).WithLengthOf(100);
mapping.Map(x => x.Price);
mapping.Map(x => x.Description).CustomSqlTypeIs("Text");
mapping.References(x => x.Category).Cascade.All();
mapping.HasMany<ProductImage>(x => x.Images).Inverse().Cascade.All().LazyLoad();
mapping.HasManyToMany<Category>(x => x.Categories)
.WithTableName("CategoryProduct")
.WithParentKeyColumn("Product_id")
.WithChildKeyColumn("Category_id")
.Inverse()
.AsBag();
}
}
Eu tentei muitas combinações de estruturação do M:. M mapeamentos, mas nada funciona
Este artigo tem sugestão para re- compilação S # arp com atualização FHN, eu tentei isso, porém, o código mais recente FHN é muito diferente ao utilizado pelo S # arp que parece. Corrigido todos os conflitos de quebra, mas ainda não funciona.
Esperemos que alguém encontrou e resolveu M:. M auto-mapeamento de problemas de sobreposição com S # arp
Solução
conseguiu resolver o problema, acabou por ser um S # iniciantes arp erro.
Para dados ManyToMany para ser salvo, em seguida, a necessidade método de controlador de ter o atributo [transacções] atribuído a ele.