Я довольно новичок в nHibernate. Я установил следующее взаимно-однозначное сопоставление между двумя таблицами «Пользователь» и «Пользовательский профиль».
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; }
}
Теперь, когда я пытаюсь сохранить свой объект «Пользователь», я получаю исключение:
« Указанный ключ отсутствует в словаре » в следующей строке:
using (ISession session = SessionFactory.OpenSession())
Кто-нибудь знает, что здесь может происходить?