Am довольно новый для nHibernate. Я установил следующее сопоставление «один к одному» между двумя таблицами «Пользователь» и «Пользовательский файл».«Данный ключ отсутствовал в словаре» nHibernate C#
User.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Core.Domain.Model" assembly="Core">
<class name="User" table="Users" dynamic-update="true" lazy="false">
<cache usage="read-write"/>
<id name="UserId" column="UserId" type="guid">
</id>
<one-to-one name="UserProfile" class="UserProfile"/>
</class>
</hibernate-mapping>
UserProfile.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Core.Domain.Model" assembly="Core">
<class name="UserProfile" table="UserProfiles" dynamic-update="true" lazy="false">
<cache usage="read-write"/>
<id name="UserProfileId" column="UserProfileId" type="int">
<generator class="native"/>
</id>
<property name="Description" length="100"/>
<many-to-one name="User" unique="true" column="UserId"/>
</class>
</hibernate-mapping>
Мои POCO которые за указанные отображения являются:
public class User
{
public virtual Guid UserId { get; set; }
public virtual UserProfile UserProfile { get; set; }
}
public class UserProfile
{
public virtual int UserProfileId { get; set; }
public virtual User User { get; set; }
}
Теперь, когда я пытаюсь сохраняю мой объект «Пользователь», я получаю исключение: «Данный ключ не был представлен i п словарь "на следующей строке:
using (ISession session = SessionFactory.OpenSession())
Кто-нибудь знает, что может быть здесь происходит?
Я видел эту ошибку, прежде чем я думаю. Попробуйте восстановить приложение и снова запустите его. Посмотрите, какое первое исключение получает. – jjnguy
Не могли бы вы показать в качестве кода, что доза сохраняется ... –
Просто сделал. Это исключает одно и то же исключение. – kartikq