Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在基于Orchard CMS的web应用程序中添加新表/实体时,如何强制刷新NHibernate的persister collection/mappings.bin?_C#_Asp.net_Nhibernate_Nhibernate Mapping_Orchardcms 1.10 - Fatal编程技术网

C# 在基于Orchard CMS的web应用程序中添加新表/实体时,如何强制刷新NHibernate的persister collection/mappings.bin?

C# 在基于Orchard CMS的web应用程序中添加新表/实体时,如何强制刷新NHibernate的persister collection/mappings.bin?,c#,asp.net,nhibernate,nhibernate-mapping,orchardcms-1.10,C#,Asp.net,Nhibernate,Nhibernate Mapping,Orchardcms 1.10,我通过Migrations.cs文件创建了一个新表: // New table - StaffAddress SchemaBuilder.CreateTable("StaffAddress", tb => tb .Column<int>("StaffAddressId", p => p.PrimaryKey().Identity()) .Column<

我通过Migrations.cs文件创建了一个新表:

        // New table  - StaffAddress
        SchemaBuilder.CreateTable("StaffAddress",
           tb => tb
               .Column<int>("StaffAddressId", p => p.PrimaryKey().Identity())
               .Column<bool>("UseForFutureItems", p => p.NotNull())
               .Column<int>("AddressId", p => p.Nullable())
               .Column<int>("StaffId", p => p.Nullable())
           );

        // foreign key relations
        SchemaBuilder.CreateForeignKey("Fk_StaffAddress_Address", "StaffAddress",
            new string[] { "AddressId" }, "Address", new string[] { "AddressId" });

        SchemaBuilder.CreateForeignKey("Fk_StaffAddress_Staff", "StaffAddress",
            new string[] { "StaffId" }, "Staff", new string[] { "OrchardUserID" });
迁移已成功运行,表已创建,网站已启动,但无法保存地址

据我所知,mappings.bin没有得到更新,或者Orchard CMS/Nhibernate框架中的某些持久化程序集合没有得到更新

有办法解决这个问题吗


注意:我无法删除mappings.bin,因为该应用程序是自动更新的。

我猜您的映射没有得到更新,因为哈希没有得到更新。 因此,在PersistenceConfigurations.cs中,检查是否已更新 ComputingHash()方法。如果没有,更新散列,您的问题就会得到解决

        config.Mappings(x => x.AutoMappings.Add(AutoMap.Source(CreateTypeSource<entity.StaffAddress>())
        .Override<entity.StaffAddress>(map =>
        {
            map.Table("StaffAddress");
            map.Id(m => m.StaffAddressId, "StaffAddressId");
            map.References(y => y.Staff, "StaffId");
            map.References(z => z.Address, "AddressId");
        })));
2018-08-09 13:13:09,475 [22] Service - Default - Error on creating staff address .
NHibernate.MappingException: No persister for: Models.StaffSavedAddress
   at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName)
   at NHibernate.Impl.SessionImpl.GetEntityPersister(String entityName, Object obj)
   at NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
   at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event)
   at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event)
   at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event)
   at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
   at NHibernate.Impl.SessionImpl.Save(Object obj)