В моей компании несколько сайтов, которые ссылаются на одну и ту же БД и библиотеку кода Core.Затем у нас есть CMS, которая управляет данными.
В библиотеке Core у меня есть класс Site, который содержит кучу базовой информации о каждом сайте.Это беглое отображение, которое у меня есть для него.
using Core.Model; // Where Site class exists
namespace Core.Repository.NHibernate.Mappings
{
public class SiteMapping : ClassMap<Site>
{
public SiteMapping()
{
Table("f_site");
Id(x => x.Id, "f_site_id").GeneratedBy.Identity();
Map(x => x.Domain, "domain_name").Not.Nullable();
}
}
}
В рамках CMS мы ведем журнал того, кто что редактировал и когда.Но я хочу иметь ссылку только на класс Log и отображение в CMS, а не в моем основном коде, поскольку люди могут редактировать информацию только через CMS.
Вот мое текущее свободное отображение в журналекласс, который ссылается на класс Site.
using Core.Model; // where Site class exists
using Cms.Model; // where Log and CmsUser classes exists
namespace Cms.Repository.NHibernate.Mappings
{
public class LogMapping : ClassMap<Log>
{
public LogMapping()
{
Table("f_log");
Id(x => x.Id, "f_log_id").GeneratedBy.Identity();
Map(x => x.Message, "message");
Map(x => x.LogType, "d_log_type_id").CustomType<LogType>();
Map(x => x.LogOperation, "d_log_operation_id").CustomType<LogOperation>();
Map(x => x.Date, "log_date");
References<Site>(x => x.Site, "f_site_id")
.ForeignKey("f_site_id")
.Cascade.None();
References<CmsUser>(x => x.User, "userId")
.ForeignKey("userId")
.Cascade.None();
}
}
}
Теоретически это прекрасно работает, но ошибки отображения журнала со следующими
Cms.Tests.Repository.NHibernate.Repository.TestLogRepository.TestLogMappings:
StructureMap.StructureMapException : StructureMap Exception Code: 207
Internal exception while creating Instance 'e46153a3-2bfe-4279-8749-a42d7a6dd10c' of PluginType Core.Repository.NHibernate.SessionStorage.ISessionContainer`1[[HbmCms.Repository.NHibernate.Mappings.Config.LogMapping, Cms.Repository.NHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Core.Repository.NHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. Check the inner exception for more details.
----> StructureMap.StructureMapException : StructureMap Exception Code: 207
Internal exception while creating Instance '9e72c2ff-e3f4-4b54-9f34-3422a7b982a7' of PluginType Core.Repository.NHibernate.SessionStorage.ISessionFactoryContainer`1[[Cms.Repository.NHibernate.Mappings.Config.LogMapping, Cms.Repository.NHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. Check the inner exception for more details.
----> FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
----> NHibernate.MappingException : An association from the table f_log refers to an unmapped class: Core.Model.Site
Кто-нибудь знает, как получить мою CMSсопоставление для ссылки на сопоставление основного сайта?Это первый фрагмент кода, который получает отображение между двумя проектами, но это то, что мы будем делать довольно много, как и многие вещи, которые вы только смотрите и делаете в CMS.Я действительно не хочу помещать код только CMS в библиотеку Core, если я могу избежать этого.
Спасибо за помощь
Сандра