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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top