يتجاوز S # تأهيل الزراعة المعمارية كثير لكثير رسم الخرائط لا يعمل

StackOverflow https://stackoverflow.com/questions/1816342

سؤال

ولقد حاولت الى حد كبير كل شيء للحصول M: تعيينات M العمل في الهندسة المعمارية S # تأهيل الزراعة. للأسف المثال مشروع NORTHWIND لايوجد M: تجاوز M

جميع عملت بشكل جيد في مشروعي قبل أن يهتدي إلى S # تأهيل الزراعة وخيارها لرسم الخرائط السيارات يجيد NHibernate ل. أنا أحب لصناعة السيارات في رسم الخرائط، انها جيدة، ولكن تجاوزات لا يبدو للتسجيل.

وكل ذلك يبدو أن العمل في الذاكرة وفي الاختبارات، ولكن عندما يرتكب البيانات إلى قاعدة بيانات شيء يحصل إدراجها في بلدي M: M الجدول المرجعي

إذا أخذنا عينة بسيطة من الفئة يمكن أن يكون العديد من المنتجات والمنتج يمكن أن يكون في كثير من الفئات سيكون لدينا جدول يسمى CategoryProduct (أنا لا أحب pluralisation) الذي يحتوي على أعمدة CATEGORY_ID وPRODUCT_ID.

ونموذج بلدي استمرار السيارات يولد على هذا النحو:

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

وتجاوز رسم الخرائط التصنيف يشبه هذا:

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

والمنتج لديها تجاوز رسم الخرائط على هذا النحو:

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

ولقد حاول العديد من مجموعات من هيكلة M: تعيينات M، ولكن لا شيء يعمل

.

المقالة ديه اقتراح لإعادة تجميع S # تأهيل الزراعة مع تحديث FHN، حاولت هذه إلا أن آخر رمز FHN مختلف تماما لتلك المستخدمة من قبل S # ARP على ما يبدو. إصلاح جميع الصراعات الانهيار لكنه ما زال لا يعمل.

ونأمل شخص آخر واجه وحلها M: M مشاكل صناعة السيارات في تعيين تجاوز مع S # تأهيل الزراعة

هل كانت مفيدة؟

المحلول

وتمكنت من حل القضية، وتحولت إلى كونه S # خطأ مبتدئين تأهيل الزراعة.

لبيانات ManyToMany ليتم حفظها ثم طريقة تحكم يحتاج أن يكون [عملية] سمة المسندة إليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top