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

流畅的NHibernate:如何告诉它不要映射基类

在云计算领域,NHibernate 是一个流行的对象关系映射(ORM)框架,用于将数据库表映射到程序中的类。在某些情况下,您可能希望避免将基类映射到数据库表。为了告诉 NHibernate 不要映射基类,您可以使用以下方法:

  1. 使用 abstract 关键字标记基类:将基类标记为抽象类,这样 NHibernate 就不会尝试将其映射到数据库表。
代码语言:csharp
复制
public abstract class BaseClass
{
    // 基类属性和方法
}
  1. 使用 Not.LazyLoad() 方法:在映射基类时,使用此方法告诉 NHibernate 不要延迟加载基类。
代码语言:csharp
复制
public class SubClassMap : ClassMap<SubClass>
{
    public SubClassMap()
    {
        Id(x => x.Id);
        Map(x => x.Property);
        References(x => x.BaseClass).Not.LazyLoad();
    }
}
  1. 使用 union-subclass 元素:在 NHibernate 配置文件中,使用此元素将基类和子类组合在一起,以便 NHibernate 只映射子类。
代码语言:xml<class name="BaseClass" table="BaseClass">
复制
    <id name="Id">
       <generator class="native" />
    </id>
   <union-subclass name="SubClass" table="SubClass">
       <property name="Property" />
    </union-subclass>
</class>
  1. 使用 Fluent NHibernate:使用 Fluent NHibernate 映射基类和子类,可以更灵活地控制映射的细节。
代码语言:csharp
复制
public class BaseClassMap : ClassMap<BaseClass>
{
    public BaseClassMap()
    {
        Id(x => x.Id);
        Map(x => x.Property);
    }
}

public class SubClassMap : SubclassMap<SubClass>
{
    public SubClassMap()
    {
        Map(x => x.SubClassProperty);
    }
}

通过使用上述方法之一,您可以确保 NHibernate 不会映射基类。在选择方法时,请根据您的具体需求和项目结构进行选择。

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

相关·内容

Nhibernate_nhibernate与ef区别

创建映射文件,以告诉NH怎样持久化这些属性. 4. 创建NH配置文件,以告诉NH怎样连接数据库. 5. 使用NH提供API....步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net,我们还需要告诉NH怎样在数据库和之间映射.这就需要映射文件了.最简捷(也是可维护性最好)方法就是为每一个编写一个映射文件...:第一个tag是class,这里我们把类型名(名和Assembly名)映射到数据库中user表(这里和hibernate有些不同,我们必须告诉NH这个从哪儿来.这个差异是由.Net和Java Reflect...这些嵌入Generator标记告诉NH怎样生成Primary Key(NH很方便就能给你生成一个,不管是什么类型,只要你告诉怎样去做).在我们举例子中,把设置成"assigned",意思是"...不要忘记了,最后要关掉你Session. // tell NHibernate to close this Session session.Close();

59330

NHibernate介绍「建议收藏」

C#可用以解决对象/关系数据库映射工具有多种,常见有EF (Entity Framework)、NHibernate、iBATIS等,各自优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是从特定中继承而来。 在NHibernate中不用特殊修饰就可以让对象和持久化层交互。...class元素表示到单个POCO映射。name表示上面的程序集和命名空间中名,table属性告诉NHibernate数据库中哪个表或者视图将被映射。...id元素告诉NHibernate哪个数据库字段和对应对象作为一个唯一键来使用。在本例中,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID。...property标签是见得最多标签。简单地映射一个到数据表或者视图中对应字段映射

70320
  • NHibernate详解

    开发过程: 1.新建一个将要持久化.Net对象表 2.构建一个需要被持久化.Net 3.构建一个可以让NHibernate知道如何持久化对象属性映射文件...第三步:写映射文件 现在我们有数据表和需要去映射.Net。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...最易于管理办法是为每一个写一个映射文件,如果你命名它是YourObject.hbm.xml 并且把放在和同一个目录里,NHiberante将会使得事情简单起来。...第一个有趣标签是class。这里我们将映射类型名称(名,装配件)到我们数据库中User表,这里和Hibernate有一点点不同。你将不得不告诉NHibernate从何处提取对象。...内嵌generator 标签告诉NHibernate 如何生成主键(它将恰当为你生成主键,不管你指定何种类型,但你必须告诉)。

    68530

    Nhibernate_juan benet

    在数据库中创建把.Net持久化对应表. 2. 创建需要被持久化.Net. 3. 创建映射文件,以告诉NH怎样持久化这些属性. 4....步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net,我们还需要告诉NH怎样在数据库和之间映射.这就需要映射文件了.最简捷(也是可维护性最好)方法就是为每一个编写一个映射文件...:第一个tag是class,这里我们把类型名(名和Assembly名)映射到数据库中user表(这里和hibernate有些不同,我们必须告诉NH这个从哪儿来.这个差异是由.Net和Java Reflect...这些嵌入Generator标记告诉NH怎样生成Primary Key(NH很方便就能给你生成一个,不管是什么类型,只要你告诉怎样去做).在我们举例子中,把设置成”assigned”,意思是”...不要忘记了,最后要关掉你Session. // tell NHibernate to close this Session session.Close(); 版权声明:本文内容由互联网用户自发贡献

    37750

    NHibernate总结

    NHibernate不仅仅管理.NET 到数据库表映射(包括.NET 数据类型到SQL 数据类型映射),还提供数据查询和获取数据方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据时间...封装Nhibernate底层操作,People.cs为实体,People.hbm.xml为映射文件(把数据库表People映射到实体People)。...virtual,要不然会报错 (4)     下面我们开始为People实体进行数据库表映射配置People.hbm.xml NHibernate要知道怎样去加载和存储持久化对象。...这正是NHibernate映射文件发挥作用地方。映射文件包含了对象/关系映射所需元数据。元数据包含持久化声明和属性到数据库映射。...映射文件告诉NHibernate应该访问数据库里面的哪个表及使用表里面的哪些字段。 <?xml version="1.0" encoding="utf-8" ?

    92540

    #1在构造函数内调用虚方法 | TW洞见

    你也许已经猜到了,结果是: Base constructor Derived constructor 我们在初始化一个对象时,总是会先执行构造函数,然后再执行子类构造函数。...Virtual member call in constructor警告是因为,对于Base b = new Derived();这样代码: 构造函数执行要早于子类构造函数 构造函数中对于虚方法调用...比如如果项目中使用了NHibernate,框架本身要求ORM实体中,所有与数据库列具有对应关系属性都必须为虚属性。...这是因为NHibernate为了实现延迟加载,会为每个实体生成proxy,这些proxy需要重写实体中属性getter/setter。...但我们要注意,在代码中保证那些可能会被继承实体,在子类中重写那些虚属性时,不要依赖于子类自身构造函数(这几乎是可以保证,因为与数据库列映射属性,只能是最简单getter/setter)。

    1.2K110

    连贯NHibernate 1.0正式发布

    连贯NHibernate(Fluent NHibernate) 是通过编程方式而不是使用XML配置文件创建NHibernate映射API。...目标是在项目中运用NHibernate时减少所遇到困难,提供更好可读性、可测试性和编译时安全性。...连贯NHibernate降低了复杂性,并进一步加强了约定胜于配置原则,即任何一个映射最常用设置是默认。 除了编译时检查外连贯NHibernate还为你映射测试提供了一个健壮API。...Wiki上有教程告诉怎么用,园子里inday几篇文章可以先看一下: [原创]Fluent NHibernate之旅 [原创]Fluent NHibernate之旅二--Entity Mapping...RC版本是8月16日才发布,不到半个月时间就RTM了。可以从InfoQ文章连贯NHibernate正式发布1.0候选版了解一下RTM内容了。

    64670

    NHibernate教程

    NHibernate是一个面向.Net环境对象/关系数据库映射工具。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象属性。例如学生和课程间多对多关系就可以转化为学生一个课程集合属性。...由此可见,NHibernate不仅仅管理.Net到数据库表映射,还提供数据查询和获取数据方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据时间。...NHibernate知道如何完成ORM映射XML文件; 5.使用NHibernateAPI来编程 三、NHibernate使用 1....使用NHibernateAPI进行编程 数据库编程不外乎“添加”、“删除”、“更新”,看看NHibernate如何实现这三种操作吧。

    36910

    C#——Nhibernate探索

    这里有两个库;可以分析得出,这两个库是要被引用库拥有对应XML,没找到具体使用该XML方法。所以暂时不去理他。 NHibernate.pdb应该是没有用。估计是作者忘记删除了。...上网调查后,发现Nhibernate有Castle框架、LinFu框架、Spring.Net三种。 看起来很复杂,文章有很多,写又很复杂,于是我放弃调查,直接尝试使用,首先第一步,直接引用库。...调查结果: 对象与数据库映射是保存在XML文件中,于是我配置XML映射文件如下。 该XML文件属性,要求设置其生成操作为【嵌入资源】。 但我怕丢失,还给他设置了始终复制属性。...这句话意思是,映射我创建那个库。 我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。...最后,nhibernate-configuration-2.2这句话我想了很久要不要改成4.0。 结果是我没改,测试一切正常。可以顺利使用。

    49430

    2022年了有哪些值得推荐.NET ORM框架?

    如何选择合适自己ORM框架? 对于我们而言选择ORM框架目的其实都是为了让我们程序更好操作数据库,提高开发编程效率和程序维护拓展性。...对于更高级查询场景,Dapper Extensions 提供了一个谓词系统。这个库目标是通过不需要任何属性或继承来保持你 POCO 纯净。...主要特点: 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移; 支持 DbFirst 模式,支持从数据库导入实体,或使用实体生成工具生成实体; 支持 深入类型映射,比如...  NHibernate 是一个成熟开源对象关系映射器,适用于 .NET 框架。...与ActiveRecord一样,支持对象和数据库表之间密切关系。 与SubSonic一样,支持使用 T4 模板生成 poco (仅限 V5)。

    5.9K11

    2022年了有哪些值得推荐.NET ORM框架?

    如何选择合适自己ORM框架? 对于我们而言选择ORM框架目的其实都是为了让我们程序更好操作数据库,提高开发编程效率和程序维护拓展性。...对于更高级查询场景,Dapper Extensions 提供了一个谓词系统。这个库目标是通过不需要任何属性或继承来保持你 POCO 纯净。...主要特点: 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移; 支持 DbFirst 模式,支持从数据库导入实体,或使用实体生成工具生成实体; 支持 深入类型映射...  NHibernate 是一个成熟开源对象关系映射器,适用于 .NET 框架。...与ActiveRecord一样,支持对象和数据库表之间密切关系。 与SubSonic一样,支持使用 T4 模板生成 poco (仅限 V5)。

    3.8K20

    .NET程序员必备58个提高效率工具

    [由 Cheung Tat Ming提供] AutoPoco:AutoPoco 是一个高度可配置框架,用于流畅构建可读来自于 Plain Old CLRObjects 测试数据。...AutoMapper:对象到对象映射。例如,该工具可用于映射实体对象到领域对象,而不是写手动映射代码。...Internals Viewer for SQL Server:Internals Viewer 是一个查看 SQL Server 存储引擎,查阅数据如何物理分配,组织和存储工具。...NHibernate NHibernate Mapping Generator:生成 NHibernate 映射文件和对应于现有 DB 表实体。 11....如,对于 ASP.NET MVC 项目,你需要从 NuGet 添加。Glimpse 数据可以告诉你不同层面的延迟,真正表明你可以优化代码/解决方案以提高性能区域。 15.

    4.1K60

    Fluent NHibernate RC 1.0 --升级内容

    Fluent NHibernate Release Notes 1.0 : http://wiki.fluentnhibernate.org/Release_notes_1.0 FNT在映射时候,分为...Fluent Mapping(手动)和Auto Mapping(自动)两种方式,我在我“Fluent系列”中一直使用是手动方式,我觉得相对应好控制,而且也让我同时能更好学习NHibernate。...这一次他们完全丢弃了SetAttribute方法,完全依赖Fluent方式来进行实体映射,所以很多特性我也不知道如何映射,不过这时候你还是可以区GoogleGroups求助一下,强烈建议大家把收藏一下吧...3、分开SubClass映射:在RC版以前,不管是SubClass还是JoinSubClass,我们都只需要映射在父中就可以了,但这一做法在RC版中已经不再提倡,我们要分开映射,我相信这个做法是好,...3、忽略属性(IgnoreProperty),这个不错,在以前,我们自动映射时候每个属性不管要不要映射了,在RC版,我们可以使用如下代码,忽略这些属性不进行映射,非常不错,赞一个。

    65050

    C# 数据操作系列 - 11 NHibernate 配置和结构介绍

    ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库已编译映射缓存,它是持久不变且线程安全(额,这句话是从文档翻译过来)。...是一个提供ISession工厂,同时也是一个 IConnectionProvider客户端。可以设置一个在事务之间进程级或集群级二级缓存。...配置项介绍 在上一篇文章中,我们介绍了一下如何设置NHibernate基本配置项,但是并未对配置项进行深入。...dialect 数据库方言,表示NHibernate连接数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认schema,用来设置连接字符串连接数据库默认...总结 这是一篇枯燥乏味说明文,主要介绍了Nhibernate基本内容。下一章我们来试试,如何创建Nhibernate映射配置。

    1.2K20

    使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

    Nhibernate包来实现一个很简单对数据增删改查操作,这一次需要用到我们之前下载Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样: ?...不要少任何一个,好了然后我还是利用刚才创建数据库,先完善一下表,完善和如下图 ?...然后我们在工程下面新建两个文件夹:Model文件夹用来存放数据库表映射,还有一个Manger用来存放对数据库执行增删改查操作。...virtual int Age { get; set; }//表中年龄 } } 2.再在Modle文件下建立一个映射,名字为MapAPengChao,这个代码如下: using...using System.Threading.Tasks; namespace Test.Modle { /// /// 用来给数据库表中元素做映射

    1.4K30

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

    前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...NHibernate映射文件 对于NHibernate映射文件有个约定名字: .hbm.xml 这里先为大家介绍一下映射文件格式: 1.1 hibernate-mapping 说明 <hibernate-mapping...接下来,让我们探索class如何映射。 1.2.1 id 任何一个映射都必须声明一个数据表主键,大多数也必须有一个唯一标示字段用来区分不同实例。..." type="typename" /> name :属性名 column:对应数据表列名 type:数据库中类型 1.2.3 many-to-one 在Nhibernate...增删改查 Nhibernate每次操作都基于一个Session,所以我们在操作数据库时候最好先持有一个可用Session。接下来,我们就一个通用数据库操作为基础,向大家分享一下我想法。

    1.1K20

    Fluent NHibernate之旅二--Entity Mapping

    本节内容: 简单实体映射 使用自定义类型映射实体属性 NHibernate实体映射(Entity Mapping)做非常好,虽然不是完美,但一些我们经常使用,基本上已经都支持了,而且配置也相对比较简单...,然后在构造方法中完成映射方法,就能完成传统方式映射了。...hbm.xml文件,自己再看一篇,看看NHibernate映射方式,所以是非常好一个方法,我有时候做映射时候,遇到问题都会生成出来,随时查看问题所在,所以说是非常有用一个方法,而且你可以把你映射文件直接用到...在Order实体中,我们看到了订单状态我用了OrderState枚举类型,数据库存储类型为tinyint,对于映射,我们只需要: public class OrderMap : ClassMap<Order...不错不错,测试一切正常,今天代码就到这里。 总结 今天介绍了如何映射简单实体,但很多时候这都是理想数据设计,还有更多复杂,不可预计数据设计,这时候我们Fluent能做到吗?

    1K90
    领券