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

你能混合Fluent NHibernate和Traditional hbm.xml吗?

当然可以。Fluent NHibernate 和 hbm.xml 都是 NHibernate 的映射工具,它们可以同时使用。Fluent NHibernate 是一个用于简化 NHibernate 映射的库,它提供了一种更简洁、更易读的方式来描述映射关系。而 hbm.xml 是 NHibernate 的另一种映射方式,它使用 XML 文件来描述映射关系。

在一个项目中,可以同时使用 Fluent NHibernate 和 hbm.xml。Fluent NHibernate 可以用于描述那些比较简单的映射关系,而 hbm.xml 可以用于描述更复杂的映射关系。

例如,假设我们有一个用户表和一个订单表,其中订单表有一个外键指向用户表。我们可以使用 Fluent NHibernate 来描述用户表的映射关系,如下所示:

代码语言:csharp
复制
public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.Email);
        HasMany(x => x.Orders)
            .KeyColumn("UserId")
            .Cascade.All();
    }
}

而订单表的映射关系则可以使用 hbm.xml 来描述,如下所示:

代码语言:xml<class name="Order" table="Orders">
复制
    <id name="Id">
       <generator class="identity" />
    </id>
   <property name="OrderNumber" />
   <property name="OrderDate" />
    <many-to-one name="User" class="User" column="UserId" />
</class>

这样,我们就可以在同一个项目中同时使用 Fluent NHibernate 和 hbm.xml 来描述映射关系。

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

相关·内容

Fluent NHibernate之旅二--Entity Mapping

如果要体验NHibernate的强大,首先就要学会配置,包括SessionFactoryMapping的配置。今天跟上一篇一样,会使用传统方式 NHibernate 进行讲解。...如果要亲手试验一下,可以先看一下“Fluent NHibernate之旅一”,进行一下数据库SessionFactory的准备。...m => m.ProductID,可能会说主键的类型,主键还有很多特性,难道不需要配置?...两者之间的对比,只有用了以后才能懂得,只能意传不能言语。对于我这种新手来说,Fluent更适合我,因为我可以用它来进行学习NHibernate。...hbm.xml文件,自己再看一篇,看看NHibernate的映射方式,所以是非常好的一个方法,我有时候做映射的时候,遇到问题都会生成出来,随时查看问题所在,所以说是非常有用的一个方法,而且可以把的映射文件直接用到

98090

Fluent NHibernate之旅(三)-- 继承

经过了“开篇”“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定的了解了,FluentNHibernate实际就是对 NHibernate 映射的一定扩展,我们完全利用强类型...、泛型、Lambde表达式等等Vs、Framework等特性简单完成映射工作,同时也能让我们学习NHibernate的映射方式,一举夺得,这么好玩的东东,有理由不继续完成这个系列?...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前的代码,我会另外进行说明 继承 在OOP中,继承作为OO中重要的特性,如果NHibernate没有对它的支持,...那怎么称为完整的ORM框架呢?...还有几种混合方式,其实就是第一种第二种的结合,这要看不同需求了,同时也可以结合上面两种映射方式完成,就不做介绍了。

64280

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。...WithLengthOf -> Length ColumnName -> Column WithTableName -> Table 其实还有很多吧,我相信大家还是一眼看出来的,如果没有找到的话,可以去...这一次他们完全丢弃了SetAttribute方法,完全依赖Fluent的方式来进行实体映射,所以很多特性我也不知道如何来映射,不过这时候还是可以区GoogleGroups求助一下,强烈建议大家把它收藏一下吧...,我一开始就是,但是我后来我慢慢发觉,这样的好处不仅在扩展时,而且在维护、阅读时都比原先的方式要好,不觉得

62050

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

前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...不过,有社区爱好者开发了一个名为《Fluent NHibernate》的项目,用来支持NHibernate的流式配置。...NHibernate映射文件 对于NHibernate的映射文件有个约定的名字: .hbm.xml 这里先为大家介绍一下映射文件的格式: 1.1 hibernate-mapping 的说明 <hibernate-mapping...,默认情况从Property 中读取 default-lazy:可选的,默认是true,是否启动延迟加载 1.2 class的配置 一般情况下,class节点只需要指定nametable就可以了。...UPDATE NOWAIT PostgreSQL 8.2 NHibernate.Dialect.PostgreSQL82Dialect 在DROP TABLEDROP SEQUENCE 语句中支持

1.1K20

连贯NHibernate 1.0正式发布

连贯NHibernateFluent NHibernate) 是通过编程方式而不是使用XML配置文件创建NHibernate映射的API。...它的目标是在项目中运用NHibernate时减少所遇到的困难,提供更好的可读性、可测试性编译时的安全性。...连贯NHibernate降低了复杂性,并进一步加强了约定胜于配置的原则,即任何一个映射的最常用设置是默认的。 除了编译时的检查外连贯NHibernate还为的映射的测试提供了一个健壮的API。...Wiki上有教程告诉怎么用,园子里的inday的几篇文章可以先看一下: [原创]Fluent NHibernate之旅 [原创]Fluent NHibernate之旅二--Entity Mapping...[原创]Fluent NHibernate之旅(三)—继承 codeproject上也有一篇针对RC的文章:Fluent NHibernate and Linq2NHibernate – Demo Project

61370

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

经过了前面三篇的介绍,相信大家对Fluent NHibernate已经有一定的了解了,在我们学习中,Fluent 也已经进入了RTM版本。...这次的版本发布离RC版只有半个月不到,修正了很多bug,同时补充了大量的功能,在每天更新中,也看到了大量的单元测试,我们相信Fluent NHibernate 已经相对稳定成熟了。...Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...,不是说我们Fluent简单,只是传统方式的xml看上去不太美观,而Fluent这种代码式方式,更能符合我们Developer的习惯。...映射 Fluent NHibernate 映射代码: public class UserMap : ClassMap { public UserMap() {

1.2K60

面试官:聊聊string[]byte的转换

前天在一个群里看到了一份Go语言面试的八股文,其中有一道题就是"字符串转成byte数组,会发生内存拷贝?";这道题挺有意思的,本质就是在问你string[]byte的转换原理,考验的基本功底。...怎么slice这么相似,底层指向的也是数组,是什么数组呢?...(str) str1 := string(by) fmt.Println(str1) } 标准转换用起来还是比较简单的,那你知道他们内部是怎样实现转换的?...string[]byte强转换 标准的转换方法都会发生内存拷贝,所以为了减少内存拷贝内存申请我们可以使用强转换的方式对两者进行转换。...但是如果是在高性能场景下使用,是可以考虑使用强转换的方式的,但是要注意强转换的使用方式,他不是安全的,这里举个例子: func stringtoslicebytetmp(s string) []byte

24010

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

Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...Mapping 四、一对一映射:One-to-One Mapping 场景和数据库设计 延续我们的演示范例,用户订单是非常典型的一对多范例。...我们原先的订单系统太贫血了,我们进一步扩展一下,现在已经可以储存收货人的姓名地址,还包括了发起人的UserID。...映射 不得不赞叹一下 Fluent Nhibernate ,有了它,我们的映射一切都变得如此简单,先来看看Model吧,用户的订单列表,对于用户来说,暂时是不需要排序的,所以我们可以使用ISet作为Order...如果您在使用Fluent Nhibernate的时候也遇到了问题,可以及时与我联系或求助于Fluent 的Google Groups。 应“亦续缘”的要求,我把代码整理了下,发上来,便于大家学习。

686100

建立数据驱动,关键字驱动混合Selenium框架这些了解

有许多框架,但是3个常用的Selenium框架是: 数据驱动框架 关键字驱动框架 混合框架 为什么我们需要一个Selenium框架? 如果没有合适的框架,将只有一个测试用例,其中包含了整个测试功能。...ExcelWSheet.getRow(RowNum).getCell(ColNum); String CellData = Cell.getStringCellValue(); return CellData; } } 混合框架...混合框架是一种技术,在这种技术中,我们可以充分利用数据驱动关键字驱动的 Selenium 框架。...使用此博客中上面显示的示例,我们可以通过将要执行的方法存储在excel文件中(关键字驱动方法)并将这些方法名称传递给Java Reflection Class(数据驱动方法)来构建混合框架,而不是创建...iRow<=7;iRow++) { sActions = ReadExcelData.getCellData(iRow, 1); //将创建一个名为“execute_Actions”的新独立方法 //可以在下面的测试中找到这个方法

93420

Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发

Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧,从...{ get; set; } public virtual IEnumerable Stores { get; set; } } 好了,代码编写完毕,接下来是映射?...不过不建议把它用在稍大的项目里,我们的项目数据库会随着项目需求的增加改变会经常修改的,建议用专业的数据库管理,比如Migrator,有兴趣下次可以开篇介绍下,用下来还是不错的。...这里我只测试了EmployeeStore两个实体,对于多对多还未测试,时间有限,等有时间下篇继续下。...Fluent Nhibernate确实是个好东西,让我在开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您的项目中使用,用起来没手感(个人感觉),需要约定的东西太多了,对于数据库结构也得按照他的契约来

92060

流畅地HtmlHelper-Asp.Net MVC

今天抛开 Fluent NHibernate 不谈,我们来谈谈 Asp.Net MVC ,在MVC的View中,我们经常会使用HtmlHelper来生成各种html代码(可能描述不太清楚看代码吧,呵呵)...HtmlHelper原先的功能不是很多,还好有很多扩展方法,我们能用它来生成一个Input控件,比如: 我们使用上面的代码生成一个没有值的单行文本框...,包括form,但如果要生成很多控件呢?...随便说个例子,比如你要添加一个产品,可能它会有几十个属性,意味着要写几十个Html.TextBox(属性值) (这里可以是其他控件),其实也没有什么,不过真的很不爽,可能我习惯了 Fluent NHibernate...不过这里值得注意的是,如果的TextBox(name)中有"."的话,的控件id会把"."替换成"_"的。 说干就干,不是很难,其实就是解析一个表达式树,取出它属性的Name就Ok了。

54080

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

本篇目的:配置Spring.NetNhibernate。配置Spring.Net来注入Nhibernate需要的SessionFactory,配置业务逻辑层所需要的Dao层属性的支持。...Nhibernate中要求映射文件必须按照约定的文件命名格式进行命名。至于放到什么项目中都可以,为了便于理解,我们把数据库表实体类映射文件放到Model项目中。...另外一个就是:实体类映射数据库文件hbm.xml文件所在的项目名称一定要配置对了。 (2)HibernateDaos.xml用于配置Dao层的xml文件。...property name="UserDao" ref="UserDao" /> 这段代码就是将我们的Dao实体注入给业务逻辑层 到此为止,我们把Spring.NetNhibernate...添加spring.netNhibernate的dll的引用。 先写到这。。。

94220
领券