首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

麻烦在具有复合ID的类上使用nHibernate 2.0的Session.Get <T>

您好!您的问题是关于使用nHibernate 2.0的Session.Get <T>方法来获取具有复合ID的类。

在nHibernate 2.0中,Session.Get <T>方法用于从数据库中获取指定类型的实例。如果您想要获取具有复合ID的类,您需要确保您的类已经正确地映射了复合ID。

在您的类中,您需要使用CompositeId属性来定义复合ID。例如:

代码语言:csharp
复制
[CompositeId]
public class MyClass
{
    [KeyProperty]
    public int Id1 { get; set; }

    [KeyProperty]
    public string Id2 { get; set; }
}

在这个例子中,我们定义了一个名为MyClass的类,它具有两个属性:Id1和Id2。这两个属性都被标记为KeyProperty,这意味着它们将作为复合ID的一部分。

接下来,您需要在您的nHibernate配置文件中定义这个类的映射。例如:

代码语言:xml<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
复制
 <class name="MyClass" table="MyTable">
   <composite-id>
      <key-property name="Id1" column="Id1Column"/>
      <key-property name="Id2" column="Id2Column"/>
    </composite-id>
  </class>
</hibernate-mapping>

在这个例子中,我们定义了一个名为MyClass的类,它的映射将使用名为MyTable的数据库表。我们使用<composite-id>元素来定义复合ID,并使用<key-property>元素来定义每个属性的映射。

最后,您可以使用Session.Get <T>方法来获取具有复合ID的类的实例。例如:

代码语言:csharp
复制
var myClass = session.Get<MyClass>(new MyClass { Id1 = 1, Id2 = "abc" });

在这个例子中,我们使用Session.Get <T>方法来获取具有复合ID(Id1 = 1,Id2 = "abc")的MyClass实例。

希望这个答案能够帮助您解决问题!如果您有任何其他问题,请随时问我。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NHibernate 缓存

NHibernate 参考文档中, 对 ISession 描述如下: A single-threaded, short-lived object representing a conversation...注意最后一句, 明确说明了一级缓存用途: 在对象树种导航、浏览时, 使用一级缓存; 根据对象 id 加载对象; 由此可以看出, 一级缓存作用是比较有限, 但是也有用得着地方。...一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 使用 session 查询对象, 如果仅仅是根据 id 加载指定对象, 需要使用 session Get 或 Load 方法, 这样可以充分利用...也可以实体 hbm 映射文件中配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐做法。...以上是项目中用到二级缓存相关知识整理, 肯定不完整, NHibernate 缓存还有更多地方需要挖掘。

60311

Fluent NHibernate之旅(四)-- 关系(

经过了前面三篇介绍,相信大家对Fluent NHibernate已经有一定了解了,我们学习中,Fluent 也已经进入了RTM版本。...这次版本发布离RC版只有半个月不到,修正了很多bug,同时补充了大量功能,每天更新中,也看到了大量单元测试,我们相信Fluent NHibernate 已经相对稳定成熟了。...Mapping 今天我们将说一下ORM中R映射,我们现在数据库大多都是关系型数据库了,所以可以说关系我们数据库设计中也是非常重要部分,NHibernate也非常重视这一块,但在传统方式中,配置就比较麻烦...够简单吧,User和UserDetail是一对一关系,构建我们实体: public class User { public virtual int UserID { get; set; }...ID与UserID是一致,所以我们要使用Foregin来获取UserID

1.2K60
  • NHibernate 缓存

    NHibernate 参考文档中, 对 ISession 描述如下: A single-threaded, short-lived object representing a conversation...注意最后一句, 明确说明了一级缓存用途: 在对象树种导航、浏览时, 使用一级缓存; 根据对象 id 加载对象; 由此可以看出, 一级缓存作用是比较有限, 但是也有用得着地方。...一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 使用 session 查询对象, 如果仅仅是根据 id 加载指定对象, 需要使用 session Get 或 Load 方法, 这样可以充分利用...也可以实体 hbm 映射文件中配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐做法。...以上是项目中用到二级缓存相关知识整理, 肯定不完整, NHibernate 缓存还有更多地方需要挖掘。

    44310

    NHibernate学习笔记之一,Hello world!

    准备工作: 需要使用.NET Framework 2.0以版本框架,准备NHibernate框架,本文使用3.3版,到目前NHibernate都还是基于.net framework 2.0,官方下载地址...:http://sourceforge.net/projects/nhibernate/files/,如果嫌麻烦,可以下载本文示例,中间包含了NHibernate。...开始做一个简单增删改查示例,如图1示例:  图1 1、创建数据库与表,这里假设使用NibernateDemo数据库,Users表包括(id,name,pwd)字段,id是主键自动增长,name与pwd...文件夹中对应数据库配置文件,这里使用MSSQL,所以复制“MSSQL.cfg.xml”,并对NHibernate配置信息适当修改 。...            finally             {                 session.Close();             }         }     } } 7、表示层使用

    60020

    C#——Nhibernate探索

    这里有两个库;可以分析得出,这两个库是要被引用库拥有对应XML,没找到具体使用该XML方法。所以暂时不去理他。 NHibernate.pdb应该是没有用。估计是作者忘记删除了。...上网调查后,发现Nhibernate有Castle框架、LinFu框架、Spring.Net三种。 看起来很复杂,文章有很多,写又很复杂,于是我放弃调查,直接尝试使用,首先第一步,直接引用库。...) { return Session.Get(Id); } } 再然后,我们新建一个控制台程序,用于测试我们编写这个NHibernate...为什么说是探索之旅呢,因为,我也是首次配置Nhibernate,我平常更多使用Entity Framework。 文中使用了一些推断,猜测词语。那是因为,真的是推断。...我并不清楚那几个点原理和含义,因为我没看Nhibernate原代码。 虽然本文是讲述,配置Nhibernate;但我更想讲述是,面对未知框架入手学习和使用方法。

    49430

    Nhibernate入门与demo

    学习和使用Nhibernate已经很久了,一直想写点东西和大家一起学习使用Nhibernate。博客园里也有很多大牛写了很多关于Nhibernate入门文章。...其中:李永京博客http://www.cnblogs.com/lyj/tag/NHibernate/  内容最为丰富。而且李哥博客里面学了很多东西,在此致谢!      ...3、怎么搭建Nhibernate?      4、怎么使用Nhibernate?      好,我们就带着这几个问题开始我们Nhibernate旅程。    ...通俗讲,就是我们操作实体,然后让ORM框架自动映射到数据库中。      而Nhibernate就是:.Net环境下实现ORM技术一个框架!     ...第四个问题:         使用和测试你配置【可以爽一把了!】

    35430

    NHibernate教程

    大家好,又见面了,我是你们朋友全栈君。 一、NHibernate简介 今日企业环境中,把面向对象软件和关系数据库一起使用可能是相当麻烦、浪费时间。...由此可见,NHibernate不仅仅管理.Net到数据库表映射,还提供数据查询和获取数据方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据时间。...二、NHibernate使用步骤 1.为系统引入NHibernate库,并且配置NHibernate; 2.新建一个将要持久化.Net对象表; 3.构建一个需要被持久化.Net; 4.构建一个可以让...NHibernate知道如何完成ORM映射XML文件; 5.使用NHibernateAPI来编程 三、NHibernate使用 1....(1) 中声明NHibernateFactory private static Configuration mCfg=new Configuration(); private static

    36910

    NHibernate详解

    大家好,又见面了,我是你们朋友全栈君。 什么是NHibernateNHibernate 是一个基于.Net 针对关系型数据库对象持久化库。...4.构建一个让NHibernate知道如何连接数据库配置文件 5.使用NHibernateAPI 第一步:写构建表SQL 这里我们将使用是一个非常简单例子...假设你正在为你网站开发一个基本用户管理子系统。我们将使用如下一张User表(假定你已经设置好一个数据库—例子里我称它为NHibernate)。...让我们先跳过id标签,来讨论property标签。简要看一下,你将发现NHibernate所要做工作。name属性值正是我们.Net 属性,column属性值将是我们数据库里字段。...那里有一堆属性你需要调整来确定如何让NHibernate来访问数据库。再次说明,你可以文档里获取更多信息。 NHibernate使用log4net来记录内部发生一切。

    68530

    ORM for Net主流框架汇总与效率测试

    为了测试接近实际型,我执行时候关掉了电脑所有程序,除测试程序,10次相同环境下重复测试10万条数据量平均值。...Gentle.Net 优点:支持t-sql,语法简单方便,效率高。 缺点:依赖代码生成器生成每个实体。 iBatis 优点: 效率比较高,尤其是非并发下效果很高,比较稳定。...缺点:配置文件比较多,t-sql每个配置文件里面写,条件查询比较麻烦。 SubSonic 优点:删除和查询效果很好,添加比较慢。 缺点:语法比较接近Linq,语法自成一派比较不满意。...NHibernate 优点:覆盖功能比较全,稳定性好,集成性能好,使用比较广泛,支持t-sql和hql语法。 缺点:配置比较多,比较麻烦,效率比较慢。 NBear 优点:配置最简单。...缺点:操作语法不成熟,不支持t-sql,使用起来不方便,已经很久没有更新了。 ps:大家根据测试结果自行选择合适框架。

    92770

    Fluent NHibernate之旅(三)-- 继承

    从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 OOP中,继承作为OO中重要特性,如果NHibernate没有对它支持,...NHibernate中,一定看到过了,其实就是把父、子类所有属性放到一个表中,这样做好处就是我们不需要建立其他表,一张表格全搞定,但缺点也显而易见,属性少情况下或许没有什么,但是多了以后,我们维护...在说一下DiscriminateSubClassesOnColumn,这就是标识符一个映射方式,因为RC版之前,我们可以使用SetAttribate方法,设定我们为"not-null" 但是...,而且现在更新也非常快,后面几张可能说下几种不常见映射和会遇到麻烦,不过感觉园子里使用NHibernate的人不太多,关注度不多,不过不影响我继续写下去决心,这次也很偶然接触了FNT,确实有好多好地方可以借鉴一下...,而且系列中,基本每个范例都写了测试代码,虽然丑陋了点,但从小做起嘛,以后要养成这个习惯。

    69680

    NHibernate介绍「建议收藏」

    C#可用以解决对象/关系数据库映射具有多种,常见有EF (Entity Framework)、NHibernate、iBATIS等,各自优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...NHibernate使用核心组件。...相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是从特定中继承而来NHibernate中不用特殊修饰就可以让对象和持久化层交互。...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然很多案例中这可能是一对一关系,但这并不是必定。...id元素告诉NHibernate哪个数据库字段和对应对象作为一个唯一键来使用本例中,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID

    70320

    Fluent NHibernate之旅(四)-- 关系(中)

    映射 不得不赞叹一下 Fluent Nhibernate ,有了它,我们映射一切都变得如此简单,先来看看Model吧,用户订单列表,对于用户来说,暂时是不需要排序,所以我们可以使用ISet作为Order...FluentSessionFactory.GetCurrentFactory(); using (var session = factory.OpenSession()) { User user = session.Get...一对多映射,比起一对一来说还相对简单点,默认是延迟加载,如果项目中,有些地方,需要立即加载,我们也可以使用 FetchMode.Eager 来加载。...我们Output中,能看到NHibernate生成Sql语句,测试也成功,说明我们刚刚是立即加载了Orders属性。...如果您在使用Fluent Nhibernate时候也遇到了问题,可以及时与我联系或求助于Fluent Google Groups。 应“亦续缘”要求,我把代码整理了下,发上来,便于大家学习。

    719100

    C# 数据操作系列 - 12 NHibernate增删改查

    前言 一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...:可选项,默认是none,一种默认级联风格 auto-import:明确是否可以查询中使用非限定名。...接下来,让我们探索class如何映射成。 1.2.1 id 任何一个映射都必须声明一个数据表主键,大多数也必须有一个唯一标示字段用来区分不同实例。...增删改查 Nhibernate每次操作都基于一个Session,所以我们操作数据库时候最好先持有一个可用Session。接下来,我们就一个通用数据库操作为基础,向大家分享一下我想法。...首先,创建一个泛型模板,并约束泛型为: public class Repository where T: class { } 添加一个ISession属性,用来后续访问操作,并由构造方法赋值

    1.1K20

    搭建你Spring.Net+Nhibernate+Asp.Net Mvc 框架 (四)配置全攻略

    现在我们开始我们旅程: 第一步:配置实体【Model】对应数据库映射文件。Nhibernate中要求映射文件必须按照约定文件命名格式进行命名。...文件 右击-->属性  将[生成操作] 设置为嵌入资源 对于这部分简单说一下,这是我们为Nhibernate操作数据库做铺垫。...Nhibernate就是这样要求。我们按照模板来配置就行了。User.hbm.xml中配置是根据数据库中表和我们实体User进行对应。这方面不多讲,可以参考Nhibernate官方文档。...-- Database and NHibernate Configuration这下面是配置使用Nhibernate --> <db:provider id="DbProvider"...Dao层实现全名称。

    1K20
    领券