Используйте этот код, чтобы найти запись между двумя датами, используя $gte
и $lt
:
db.CollectionName.find({"whenCreated": {
'$gte': ISODate("2018-03-06T13:10:40.294Z"),
'$lt': ISODate("2018-05-06T13:10:40.294Z")
}});
Другая возможность состоит в том, что Вы сохраняете весь граф объектов, и что график является круговым, и объекты не могут быть пустыми. Вы не могли давать NHibernate правопорядок, в котором можно сделать вставки. (Это должно произвести лучшее сообщение об ошибке, но это производит этого).
, не видя остальную часть источника, трудно быть большего количества справки. Попытайтесь удалить объекты из отображений (и не сохранить их), пока Вы не можете выяснить то, что вызывает проблему.
Похоже, что исключение порождает в строке 25 из Вашего файла RepositoryBase.cs, по-видимому, когда Сохранение () называют на одном из Ваших временных объектов. Какой сохраняется?
кроме того, и это могло бы быть не связано, так как я незнаком с Быстрым синтаксисом, должны, дочерний объект (страховка в этом случае) имеет.Cascade. Все на нем? В стандартном синтаксисе XML-схемы только родительское отображение имеет каскад = "все" на наборе дочерних объектов.
Я ' У меня недавно была эта проблема, и она связана с тем, как поддерживаются двунаправленные отношения NHibernate. У вас есть правильное сопоставление, и поэтому NHibernate без проблем выполнит вставку пациента. Затем NHibernate необходимо взять ключ у пациентов и передать его в страховку. Поскольку пациент еще не существует, ключей не существует, и он не может выполнить вторую вставку. Ключ состоит в том, чтобы установить связь с помощью кода до сохранения, примерно так:
patient = new Patient();
patient.Insurances.Add( new Insurance{ Patient = patient } );
repository.Save( patient);
Теперь мне было чуждо, что вы должны установить свойство Patient для элемента коллекции, но если вы проигнорируете постоянство все вместе, вы будете устанавливать это в коде независимо от вашей стратегии сохранения.
У вас есть правильное сопоставление, и поэтому NHibernate без проблем выполнит вставку пациента. Затем NHibernate необходимо взять ключ у пациентов и передать его в страховку. Поскольку пациент еще не существует, ключей не существует, и он не может выполнить вторую вставку. Ключ в том, чтобы установить связь с помощью кода до сохранения, примерно так:patient = new Patient();
patient.Insurances.Add( new Insurance{ Patient = patient } );
repository.Save( patient);
Теперь мне было чуждо, что вы должны установить свойство Patient для элемента коллекции, но если вы проигнорируете постоянство все вместе, вы будете устанавливать это в коде независимо от вашей стратегии сохранения.
У вас есть правильное сопоставление, и поэтому NHibernate без проблем выполнит вставку пациента. Затем NHibernate необходимо взять ключ у пациентов и передать его в страховку. Поскольку пациент еще не существует, ключей не существует, и он не может выполнить вторую вставку. Ключ в том, чтобы установить связь с помощью кода до сохранения, примерно так:patient = new Patient();
patient.Insurances.Add( new Insurance{ Patient = patient } );
repository.Save( patient);
Теперь мне было чуждо, что вы должны установить свойство Patient для элемента коллекции, но если вы проигнорируете постоянство все вместе, вы будете устанавливать это в коде независимо от вашей стратегии сохранения.
не уверен, помогает ли это, но это помогло мне.
<many-to-one name="Company" column="CompanyId" cascade="all" not-null="true"/>
cascade = "all" - вот что я упустил раньше