У меня проблема с Fluent NHibernate, где автопилотирование не собирает entitites в моей DLL веб-проекта. Обычно я сохраняю все объекты в отдельной сборке, и это всегда срабатывало. Однако этот проект довольно мал, поэтому я стараюсь сохранить его в одном проекте. Однако, когда я звоню AutoMap.AssemblyOf<MyEntityType>()
, сопоставлений не создается. Мне интересно, если это происходит потому, что объект живет в сборке веб-проектов, который загружается из папки временных файлов ASP.NET, а не в фактическую папку, где проект живет на диске. Это вопрос разрешения или что-то еще? Я не уверен, где начать отладку ...Fluent NHibernate automapping not working
Пример лицо:
namespace MyProject.Entities
{
public class Letter : EntityBase
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Company { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public string Country { get; set; }
public string Interest { get; set; }
public string Section1 { get; set; }
public string Section2 { get; set; }
public string Section3 { get; set; }
public string LetterText { get; set; }
public int StepNumber { get; set; }
}
}
Соответствующий код boostrap:
private static ISessionFactory GetSessionFactory()
{
var database = MsSqlConfiguration.MsSql2005
.ConnectionString(Configuration.ConnectionString)
.DefaultSchema(DEFAULT_SCHEMA)
.AdoNetBatchSize(BATCH_SIZE);
var mappings = AutoMap.AssemblyOf<Letter>()
.Where(x => x.GetType() == typeof(Letter))
.Conventions.Add
(
ConventionBuilder.Id.Always(x =>
x.GeneratedBy.HiLo(HILO_TABLE, HILO_COLUMN, HILO_MAX_LO)),
ConventionBuilder.HasMany.Always(x => x.Cascade.AllDeleteOrphan()),
Table.Is(o => Inflector.Pluralize(o.EntityType.Name)),
PrimaryKey.Name.Is(o => "Id"),
ForeignKey.EndsWith("Id"),
DefaultLazy.Never(),
DefaultCascade.All()
);
// ...
Я изменил положение Где искать для конкретного типа вместо пространство имен, но это тоже не сработало. объект сопоставления по-прежнему заканчивается пустым.
Кроме того, класс EntityBase представляет собой пустой класс, но для одного свойства Id, которое наследуется всеми объектами.
EDIT: Я переместил объекты на свою собственную сборку, и у меня все еще проблема, поэтому она не связана с расположением сборки веб-проекта. Я все еще довольно потерял это. :(
Можете ли вы привести пример одного из ваших сущностей и кода, который вы используете для создания фабрики конфигурации/сеанса? –
Я добавил пример кода – Chris
Что произойдет, если вы добавите 'virtual' ко всем свойствам? NHibernate требует, чтобы все свойства были 'virtual'. –