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

如何使用流畅的nhibernate(schemaexport)测试生成表?在asp.net上下文中

在这个问答内容中,我们要讨论的是如何使用 NHibernate 的 SchemaExport 功能在 ASP.NET 上下文中生成数据库表。NHibernate 是一个流行的 .NET 对象关系映射(ORM)框架,它允许开发人员使用 .NET 对象与数据库进行交互。

首先,我们需要安装 NHibernate 的 NuGet 包。在 Visual Studio 中,打开包管理器控制台,并运行以下命令:

代码语言:txt
复制
Install-Package NHibernate

接下来,我们需要配置 NHibernate。在应用程序的配置文件(通常是 Web.configApp.config)中,添加以下配置节:

代码语言:xml<configuration>
复制
 <configSections>
   <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
  </configSections>

 <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
   <session-factory>
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
     <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
     <property name="connection.connection_string">Server=localhost;Database=myDatabase;User ID=myUsername;Password=myPassword;</property>
     <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>

      <!-- Add your mapping files here -->
     <mapping assembly="MyAssembly" />
    </session-factory>
  </hibernate-configuration>
</configuration>

在这个配置文件中,我们指定了数据库连接字符串、方言和映射文件。

接下来,我们需要创建一个映射类。在这个例子中,我们将映射一个简单的 Person 类:

代码语言:csharp
复制
public class Person
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual int Age { get; set; }
}

接下来,我们需要创建一个映射文件。在项目中,右键单击 Person 类,选择“添加”>“新建项”>“NHibernate 映射”,然后命名为 Person.hbm.xml。在这个文件中,我们将映射 Person 类到数据库表:

代码语言:xml<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
复制
 <class name="MyNamespace.Person, MyAssembly" table="People">
    <id name="Id">
     <generator class="identity" />
    </id>
   <property name="Name" />
   <property name="Age" />
  </class>
</hibernate-mapping>

现在,我们可以使用 SchemaExport 类生成数据库表。在应用程序中,添加以下代码:

代码语言:csharp
复制
var configuration = new Configuration();
configuration.Configure();

var schemaExport = new SchemaExport(configuration);
schemaExport.Create(false, true);

这段代码将创建数据库表,但不会删除现有表。如果需要删除现有表并重新创建,可以将 Create 方法的第一个参数设置为 true

最后,我们可以在 ASP.NET 应用程序中使用 NHibernate。在 Global.asax.cs 文件中,添加以下代码:

代码语言:csharp
复制
protected void Application_Start(object sender, EventArgs e)
{
    var configuration = new Configuration();
    configuration.Configure();

    var sessionFactory = configuration.BuildSessionFactory();
    NHibernateSessionManager.Instance.SessionFactory = sessionFactory;
}

这段代码将创建一个 NHibernate 会话工厂,并将其存储在 NHibernateSessionManager 类中。在应用程序中,您可以使用此会话工厂创建会话并与数据库进行交互。

总结一下,我们使用 NHibernate 的 SchemaExport 类在 ASP.NET 上下文中生成数据库表。我们需要安装 NHibernate NuGet 包,配置 NHibernate,创建映射类和映射文件,然后使用 SchemaExport 类生成数据库表。最后,我们可以在 Global.asax.cs 文件中创建 NHibernate 会话工厂,并将其存储在 NHibernateSessionManager 类中,以便在应用程序中使用。

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

相关·内容

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

Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,Nhibernate书中也相应推荐了使用FN来进行映射配置,之前写FN之旅至今还有很多人会来私信我问题,说来惭愧,从...用ExposeConfiguration方法委托NhibernateSchemaExport来创建数据库架构,相信很多NH玩家都会用吧。...刚我们测试报错,是因为Employee中Name是个UserName类,NhibernateComponent,我FN之旅四(上)中有介绍到,默认情况下映射根据字段映射到数据库,所以上面的测试会报错...()))) 现在您还无法测试通过,因为我用了PersistenceSpecification进行测试进行常规测试时是没有问题,但遇到Component或者Reference之类,都需要我们自己来写一个...Fluent Nhibernate确实是个好东西,让我开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您项目中使用,用起来没手感(个人感觉),需要约定东西太多了,对于数据库结构也得按照他契约来

94660

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

实例状态 NHibernate中,一个可持久化对象有三种不同状态,依据与持久化上下文之间关系不同,其中ISession就是一个持久化上下文。...这种状态通常是从数据库中获取到数据或者新建数据附加到了上下文中。 detached 游离态 该状态对象是从上下文中分离出来,有了数据库主键,曾经或现在仍然有一条数据库记录与之对应。...造成原因可能有,上下文关闭了;该对象是另一个上下文中持久化,它对于当前上下文是游离态。 3....show_sql 是否控制台中打印转换SQL语句,一般调试过程中会设置为true,用来确认生成SQL是否正确等。...总结 这是一篇枯燥乏味说明文,主要介绍了Nhibernate基本内容。下一章我们来试试,如何创建Nhibernate映射配置。

1.2K20

.Net 高效开发之不可错过实用工具 工欲善其事,必先利其器,没有好工具,怎么能高效开发出高质量代码呢?本文为各ASP.NET 开发者介绍一些高效实用工具,涉及SQL 管理,VS插件,内

ASPhere: Web.config 图形化编辑器 ComponentOne Studio for ASP.NET 一整套完备开发工具包,用于各种浏览器中创建和设计具有现代风格Web应用程序...Internals Viewer for SQL Server: Internals Viewer 用来SQL Server 存储引擎中查找工具,以及获取数据物理层是如何分配,组织和存储。...NHibernate NHibernate Mapping Generator : 生成 NHibernate 映射文件,并从存在数据库映射到领域类。 ​...如 ASP.NET MVC 项目,可以通过NuGet添加。 性能 PerfMon: 使用 性能计数器监控系统性能。...是 Visual Studio 扩展项,能够自动生成 方法或属性 文档注释,包括它们类型,名称,其他上下文信息。

3.4K60

DotNet 资源大全中文版(Awesome最新版)

Books书籍 .NET Core in Action - 教会如何使用.NET Core编写应用程序和库。...Internationalization国际化 i18n - ASP.NET MVC智能国际化 MessageFormat.NET - .NET中ICU MessageFormat实现可让您编写上下文...最快微米扩展 NHibernate - NHibernate对象关系映射器 Fluent NHibernate - 流畅,无XML,编译安全,自动化,基于约会NHibernate映射。...- State Machine - 一个强大状态机器库 - 配置了流畅api和同步和异步状态转换支持 Static Site Generators静态站点生成器 FsBlog - 博客意识,静态网站生成使用...Machine.Specifications - Machine.Specifications(MSpec)是一个上下文/规范框架,可以消除语言噪音并简化测试

16.2K82

springBoot生成SQL文件-使用Hibernate5SchemaExport实现02

在上篇springBoot生成SQL文件-使用Hibernate5SchemaExport实现01中已经知道从Hibernate5.0.x开始通过程序生成SQL方式已变成: ServiceRegistry...schemaExport = new SchemaExport(metadata); schemaExport.create(true, true); 下面我们看下在springBoot中如何在启动过程中生成...这里通过两种方式实现,第一种为最初版本,第二种是第一种精简版,两种套餐可酌情使用。 初版 初版中通过手动注入关键been实现获取HibernateConfig配置。...提供者使用, * 这里用于生成PersistenceUnitInfoBeen,用于代替persistence.xml * @param entityScanPackages...这是Spring应用程序上下文中设置共享JPA EntityManagerFactory最强大方法;之后可以通过依赖注入将EntityManagerFactory传递给基于JPADAO。

1K20

Java Spring 应用中使用 ASP.NET Core Identity 数据库进行用户认证

Java Spring 应用中使用 ASP.NET Core Identity 数据库进行用户认证 使用 NHibernate 创建 Asp.Net Core 应用 ASP.NET Core Identity...NHibernate 是 .NET 平台上老牌对象关系映射 (ORM) 类库, 成熟度很高, 也实现了 ASP.NET Core Identity 认证支持。 ?...语句创建数据, 而不是使用 NHibernate Schema Export 来建, 这样可以更加准确控制数据库; 为了和 Java Spring 项目能够使用同样用户(即: 使用 ...., 实际项目中需要进一步选择更加安全加密存储; 创建测试用户 使用 Identity 创建用户 admin 示例代码如下: var user = await userManager.FindByNameAsync...接下来就是本文重点, Spring 应用中使用 ASP.NET Identity 数据库用户。

1.2K30

c# 常用框架整理

Faker.Net https://github.com/jonwingfield/Faker.Net 开发时候是不是为测试数据烦恼?Faker.Net可以非常方便帮你生成大批量测试数据。...程序,而无需了解如何使用 Socket,如何维护Socket连接,Socket是如何工作。...话说,这个ORM,博主自己也一直使用,确实十分强悍,至少性能方面,恐怕.NET里面的大多数ORM只能是望其项背了。...你 代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确和字段中去.大量减少开发时人工使用SQL和ADO.NET处理 数据时间....因此对于那些 基于.NET中间层应用中,它们实现面向对象业务模型和商业逻辑应用,NHibernate是最有用

4.7K10

DotNetNuke初试水之结合NHibernate开发和导入一个Module

Dotnetnuke是建立微软ASP.NET平台之上一套Web应用框架。Dotnetnuke是微软第一次向开源说"Yes"里程碑。Dotnetnuke 是门户网站未来。...Starter Kits 是一个所有源代码开放示例应用程序,它演示如何通过它来实现特殊 复杂软件功能.这个工具包非常简单,但却非常完善,并且推崇和吸引程序员们基础之上开发软件项目....起初,IBuySpy Portal目的是为了演示,ASP.NET如何能够构架出一个动态,数据驱动门户软件,但是 很快,微软 .NET研发中心将IBS变成了为他们自己开发ASP.NET应用程序所必须一个组件...DataAccessLayer使用Nhibernate实现,很好支持多种业务数据库和同时很多代码生成器支持代码输出,基本CRUD操作不需要开发。...代码重构 生成Nhibernate实体类和Xml文件可以使用CodeSmith或是MyGeneration 应用Nhibernate封装好NHibernate.Repository类库(

1.6K20

盘点 .NET 比较流行开源ORM框架

开发人员使用Linq语言,对数据库操作如同操作object对象一样省事。 EF有三种使用场景: 1、从数据库生成Class。 2、由实体类生成数据库结构。...架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式而不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。...异步或同步,选择权您。(又名异步)(V6) 与严格未修饰 POCO 或归属几乎 POCO 一起使用。 易于配置,包括开箱即用流畅配置。...通过使用 DynamicMethod 生成消除 Linq 和快速属性分配来获得出色性能。 查询语言是好 ole SQL。 包括一个低摩擦 SQL 构建器类,使编写内联 SQL变得更加容易。...(Oracle 支持但没有集成测试)。 Net Standard 2.0、.NET 4.0/4.5+ 或 Mono 2.8 及更高版本下工作。 有Xunit单元测试。 已支持 DBs 集成测试

3.9K41

NHibernate实践与模式

NHibernate实践与模式 NHibernate是一款非常优秀O/R mapping开源框架,再还没有.net时候它已经存在于java环境中。...下面我们先看一下它框架 工作原理 将数据库结构映射成实体类(xml-mapping文件,实体类 ,class文件),支持一对多,多对一,多对多关系,默认生成对这些CURD操作,包括多表脊联操作...当然还有很多NHibernate开发框架大家可以www.codeproject.com,www.codeplex.com上找到。...然后再去创建数据库,和UI部分; 我还是按在有数据情况下如何NHibernate作开发 1.用MyGeneration创建实体类和mapping文件选择NHibernate lujan99 1.06...这个模 块他提供可以方便实现1-n,n-1,n-nmapping非常方便使用 2.项目中加载这些创建好文件建议加载到一个新项目比如BusinessModule。

80240

AppFuse项目笔记(1)

这主要是因为我没有对这些web层框架使用XDoclet,同时也是由于使用Ant工具作为安装工具局限性所致。自动生成代码工具我称之为 AppGen ,我 Part I 中讲解如何使用它。...1、关于这个指南: 本指南将向你展示如何在数据库中创建一个新,以及如何创建访问这个Java代码。 我们将创建一个对象和一些其他类来将这个对象持久化(保存、装载、删除)到数据库中。...;-) 下面我将用文字来告诉你实际开发过程中我是如何。 让我们从AppFuse项目结构中创建一个新对象,一个DAO和一个测试用例来开始。...从ant控制台,你可以看到Hibernate为你创建模型: [schemaexport] create table person ( [schemaexport] id bigint not null..., [schemaexport] primary key (id) [schemaexport] ); 如果你想看一下Hibernate为你生成 Person.hbm.xml 文件内容,你可以去 build

1.5K50

Fluent NHibernate之旅二--Entity Mapping

本节内容: 简单实体映射 使用自定义类型映射实体属性 NHibernate实体映射(Entity Mapping)做非常好,虽然不是完美,但一些我们经常使用,基本上已经都支持了,而且配置也相对比较简单...Map(Expression> expression):与Id类似,对应NHibernateproperty,我这里只是简单映射,还有很多特性,今后教程中会慢慢使用...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关资料,在此也不多说,就说说Fluent方式吧,我映射自定义属性时候...不错不错,测试一切正常,今天代码就到这里。 总结 今天介绍了如何映射简单实体,但很多时候这都是理想数据设计,还有更多复杂,不可预计数据设计,这时候我们Fluent能做到吗?...这个答案我也不知道,至少我解决问题时候,觉得Fluent方式比传统方式要方便一些,至少我们测试时候,我不需要把映射文件,配置文件等重新到复制到测试项目中了,呵呵。

1K90

NHibernate详解

4.构建一个让NHibernate知道如何连接数据库配置文件 5.使用NHibernateAPI 第一步:写构建SQL 这里我们将使用是一个非常简单例子...假设你正在为你网站开发一个基本用户管理子系统。我们将使用如下一张User(假定你已经设置好一个数据库—例子里我称它为NHibernate)。...内嵌generator 标签告诉NHibernate 如何生成主键(它将恰当为你生成主键,不管你指定何种类型,但你必须告诉它)。...我们例子里,我们设定为assigned,意味着我们对象将自己生成主键(毕竟User对象常常需要一个UserID)。...那里有一堆属性你需要调整来确定如何NHibernate来访问数据库。再次说明,你可以文档里获取更多信息。 NHibernate使用log4net来记录内部发生一切。

61230

Rails框架流行在他设计理念

不过在他地盘上开发,为什么要不按人家规则做呢,况且人家目录结构,命名规则以及URL到action映射都很合理很清晰,Mix上会发布asp.net mvc URL Routing上会有很大增强...2、O/R Mapping: NHibernate,IbatisNet等ORM架构都有至少有一个记录OR映射关系配置文件,然而Rails框架没有,它使用Scaffold生成model,默认情况下就是英文复数名对应单数...Model,DB字段名对应Model字段名,中必须有叫做ID整形字段作为key等等很直觉约定。...不是在运行时执行基于反射映射,而是直接生成和编译数据访问层。...SubSonic 本身是一个功能非常强大应用程序工具集;如与 ASP.NET MVC 配合使用,它将成为非常有用应用程序框架。总之,贯穿RoR设计理念,这点对我们用.NET开发是很好借鉴。

1.9K50

一系列令人敬畏.NET核心库,工具,框架和软件

nhibernate-core – NHibernate对象关系映射器。 NEventStore – 使用事件源作为存储机制时,用于抽象不同存储实现持久性库。...MyTested.AspNetCore.Mvc – ASP.NET Core MVC流畅测试框架。 Netling – 负载测试客户端,便于Web测试。...aspnetcore-spa生成器 – Yeoman生成器,用于构建一个全新ASP.NET Core单页面应用程序,该应用程序客户端上使用Angular 2 / React / React和Redux...– 如何使用Azure Active Directory进行身份验证,Microsoft Azure上多租户应用程序中管理用户身份。...关于EF Core一个很好例子 使用EF Core连接到Postgres 神奇 开始使用Orchard Core作为NuGet包 如何ASP.NET Core中将HTML导出为PDF 使用ASP.NET

18.4K30
领券