Próbuję użyć table-per-subclass (domyślnie fluff-nhibernate automaps) o strukturze klasy, jak poniżej:
public class Product
{
public virtual int Id{ get; set; }
public virtual string Title{ get; set; }
}
public class ProductPackage : Product
{
public ProductPackage(){ Includes = new List<Product>(); }
public virtual IList<Prodcut> Includes{ get; private set; }
[EditorBrowsable( EditorBrowsableState.Never )]
public class ProductPackageAutoOverride : IAutoMappingOverride<ProductPackage>
{
public void Override( AutoMap<ProductPackage> mapping )
{
mapping.HasManyToMany( x => x.Includes )
.WithTableName( "IncludesXProduct" )
.WithParentKeyColumn( "ProductId" )
.WithChildKeyColumn( "IncludesProductId" )
.Cascade.SaveUpdate();
}
}
}
Zamiast dodawać nową tabelę "IncludesXProduct" do reprezentowania mapowania wiele-do-wielu, dodaje ona właściwość "ProductPackageId" do tabeli produktów. Oczywiście uporanie się z tym schematem nie działa.
Czy przeoczyłem coś prostego lub czy tego typu rzeczy nie są tak naprawdę obsługiwane przez NHibernate?
Odpowiedzi:
0 dla odpowiedzi № 1Można to zrobić za pomocą NHibernate. Niestety, moja płynna składnia nie jest zbyt dobra, ale wygląda na to, że FNH w jakiś sposób odnosi się do związku jako do wielu, a nie do wielu-do-wielu.
Jeśli oznaczysz swoje pytanie "fluent-nhibernate", możesz uzyskać odpowiedź od bardziej kompetentnych osób.