“给定的密钥没有出现在字典中”nHibernate C#
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了“给定的密钥没有出现在字典中”nHibernate C#,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1832字,纯文字阅读大概需要3分钟。
内容图文
![“给定的密钥没有出现在字典中”nHibernate C#](/upload/InfoBanner/zyjiaocheng/791/8146928aed9d4efeaa3c4fe7f0a94212.jpg)
我对nHibernate很陌生.我在两个表“User”和“UserProfile”之间设置了以下一对一映射.
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; }
}
现在,当我尝试持久保存“User”对象时,我得到一个例外:
“给定密钥不在字典中”,如下所示:
using (ISession session = SessionFactory.OpenSession())
有谁知道这里会发生什么?
解决方法:
我将你的hbm映射和你的类复制到我的测试项目中.我在创建SessionFactory时遇到错误.您是否有机会在第一次在using-Statement中访问时创建SessionFactory?如果是这样,那么这将有望解决问题:
我通过添加来修复它
public virtual String Description { get; set; }
到UserProfile类.
如果你的代码中有这个,只是忘了在复制和粘贴期间,我会尝试进一步调查.
编辑:
此错误的另一个可能来源 – 如找到here:
请验证所有.hbm.xml文件是否为嵌入资源.
如果仍然没有帮助,请你发布异常的StackTrace吗?
内容总结
以上是互联网集市为您收集整理的“给定的密钥没有出现在字典中”nHibernate C#全部内容,希望文章能够帮你解决“给定的密钥没有出现在字典中”nHibernate C#所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。