1

데이터베이스 (SQL2012Express)가 생성 될 때mvc4 응용 프로그램에서 많은 매핑과 함께 많은 매핑에 문제가 있습니다. 매핑 할 두 테이블이 생성되지 않습니다.다 - 많은 유창 NHibernate 문제

제품을 여러 카테고리에 연결할 수 있고 카테고리가 많은 제품 일 수 있기 때문에 많은 관계로 매핑하고 싶습니다.

public class Categoria : BaseEntity 
{ 
    public virtual string Name { get; set; } 
    public virtual ICollection<Prodotti> Prodotti { get; set; } 

    public Categoria() 
    { 
     Prodotti = new List<Prodotti>(); 
    } 

    public virtual void AddProdotti(Prodotti pro) 
    { 
     Prodotti.Add(pro); 
    } 
} 

을 그리고을 prduct 클래스 : 내 수업 카테고리에서 나는이

각각
public class Prodotti:BaseEntity 
{ 

    public virtual string Name { get; set; } 
    public virtual ICollection<Categoria> Categoria { get; set; } 

    public virtual void AddCategorie(Categoria cat) 
    { 
     Categoria.Add(cat); 
    } 

    public Prodotti() 
    { 
     Categoria = new List<Categoria>(); 
    } 

} 

클래스 맵은 다음과 같습니다

public class CategoriaMap : ClassMap<Categoria> 
{ 

    public CategoriaMap() 
    { 
     Id(x => x.Id).GeneratedBy.HiLo("Id"); 
     Map(x => x.Name); 
     Map(x => x.Description); 
     Map(x => x.Active).Default("True"); 

     HasManyToMany(x => x.Prodotti) 
      .Inverse() 
      .Table("CategoryProductsMap") 
      .ParentKeyColumn("CategoriaId").ChildKeyColumn("ProdottiId") 
      .Cascade.All(); ; 
    } 
} 

public class ProdottiMap :ClassMap<Prodotti> 
{ 
    public ProdottiMap() 
    { 
     Id(x=>x.Id).GeneratedBy.HiLo("Id"); 
     Map(x => x.Name).Not.Nullable(); 
     Map(x => x.Price).Precision(3); 
     Map(x => x.isFeatured).Nullable(); 
     Map(x => x.ShortDescription); 
     Map(x => x.FullDescription); 
     Map(x => x.ShowOnHomePage).Nullable(); 
     Map(x => x.Images); 
     Map(x => x.Published).Default("False"); 
     Map(x => x.MetaDescription); 
     Map(x => x.MetaKeywords); 
     Map(x => x.MetaTitle); 
     Map(x => x.SeName); 
     Map(x => x.Deleted).Default("False"); 
     Map(x => x.MinimumPurchaseCount); 

     Map(x => x.ShippingWeight); 
     Map(x => x.ShippingHeight); 
     Map(x => x.ShippingLength); 
     Map(x => x.ShippingWidth); 

     Map(x => x.CreatedOnUtc); 
     Map(x => x.UpdatedOnUtc); 

     HasManyToMany(x => x.Categoria)     
      .Table("CategoryProductsMap") 
      .ParentKeyColumn("ProdottiId").ChildKeyColumn("CategoriaId"); 
    } 
} 

구성은 다음과 같습니다

var configuration =Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2008.ShowSql().ConnectionString(c => 
       c.FromConnectionStringWithKey("Connection1"))) 
       .Mappings(m => m.FluentMappings 
       .AddFromAssemblyOf<latticinibufala.Entities.Maps.CustomerMap>()  ) 
       // Set session context class to enable ManagedWebSessionContext usage 
       .ExposeConfiguration(cfg => cfg.SetProperty("current_session_context_class", "managed_web")) 
       .ExposeConfiguration(cfg => cfg.SetProperty("adonet.batch_size", "10")) 
       .ExposeConfiguration(BuildSchema) 
       .BuildConfiguration() 
       ; 

      sessionFactory = configuration.BuildSessionFactory(); 

무엇이 잘못 될 수 있습니까?

+0

을 추가 하시겠습니까? CategoryMap은 어떻게 보이나요? – strmstn

+0

은 데이터베이스 테이블에서 범주 및 제품이 아닌 "CategoryProductsMap"만 표시하므로 작동하지 않습니다. 카테고리 맵을 쓰는 방법을 설명 할 수 있습니까? 아마도 내가 어떻게 범주를 매핑했는지 알고 싶습니다. 실례지만 질문을 이해하지 못합니다! – TheNeXt

+0

열을 "Prodotti_Id"및 "Categoria_Id"로 설정하면 문제가 해결 될 수 있는지 확인할 수 있습니까? – Mariusz

답변

0

를 추가해보십시오 당신의 CategoriaMap 생성자

Table("Categoria"); 

에 다음과 내가 해결 한

Table("Prodotti"); 
+0

답장을 보내 주셔서 감사합니다,하지만 시도했지만 여전히 테이블을 만들지 않습니다 – TheNeXt

0

ProdottiMap 생성자에 다음과 같은 잘못된 줄 코드는 다음과 같습니다 지도 (X => x.Active) . 기본 ("True");

데이터베이스를 원하기 때문에 숫자 1 = 진정한

0

그냥 fuent - nHibernate 수 구성 파일 당신에게 어떤 식으로 작동하지 않습니다

var props = new Dictionary<string, string>(); 
props.Add("query.substitutions", "true 1, false 0"); 

다음

.BuildConfiguration().AddProperties(props);