Frage

Ich habe so ziemlich alles versucht, M zu erhalten: M-Mappings arbeiten in S # arp-Architektur. Leider ist das Northwind Beispielprojekt kein M haben. M Überschreibung

Alle funktionierten gut in meinem Projekt vor der S # arp Umwandlung und die Wahl des Fluent NHibernate Auto-Mapping. Ich mag das Auto-Mapping, es ist gut, aber die Überschreibungen scheinen nicht zu registrieren.

Es scheint alles im Speicher und in den Tests zu arbeiten, aber wenn Daten in einer Datenbank nichts zu begehen eingefügt wird in meine M:. M Referenztabelle

Wenn wir die einfache Probe einer Kategorie nehmen viele Produkte haben kann und ein Produkt kann in vielen Kategorien sein, wir würden eine Tabelle namens CategoryProduct (Ich mag Pluralisierung nicht), die Spalten category_id und Product_id hat.

Mein Auto Persistenz-Modell erzeugt als solche:

return AutoPersistenceModel
    .MapEntitiesFromAssemblyOf<Category>()
    .Where(GetAutoMappingFilter)
    .ConventionDiscovery.Setup(GetConventions())
    .WithSetup(GetSetup())
    .UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();

Mapping Überschreibung für Kategorie sieht aus wie so:

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();
    }
}

und das Produkt hat eine Abbildungsüberschreibung als solche:

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();
    }
}

Ich habe viele Kombinationen versucht, die M der Strukturierung: M-Zuordnungen, aber nichts funktioniert

.

Das Artikel rel="nofollow hat Vorschlag re- S # arp mit Update FHN kompilieren, habe ich versucht, dies aber der letzte FHN Code ganz anders ist, dass gewöhnungs von S # arp es scheint. Feste alle Bruch Konflikte, aber es funktioniert immer noch nicht.

Hoffentlich hat jemand anderes festgestellt und behoben. M: M Auto-Mapping-Überschreibung Probleme mit S # arp

War es hilfreich?

Lösung

Managed um das Problem zu lösen, um sich zu einem S # arp Anfänger Fehler zu sein.

Für ManyToMany Daten dann die Controller-Methode gespeichert werden müssen, die [Transaktion] Attribut zugewiesen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top