首页
学习
活动
专区
工具
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方法委托Nhibernate的SchemaExport来创建数据库架构,相信很多NH玩家都会用吧。...刚我们的测试报错,是因为Employee中的Name是个UserName类,Nhibernate的Component,我在FN之旅四(上)中有介绍到,默认情况下映射根据字段映射到数据库的,所以上面的测试会报错...()))) 现在您还无法测试通过,因为我用了PersistenceSpecification进行测试的,在进行常规的测试时是没有问题的,但遇到Component或者Reference之类的,都需要我们自己来写一个...Fluent Nhibernate确实是个好东西,让我在开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您的项目中使用,用起来没手感(个人感觉),需要约定的东西太多了,对于数据库结构也得按照他的契约来

97760

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

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

1.3K20
  • .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.5K60

    springBoot生成SQL文件-使用Hibernate5的SchemaExport实现02

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

    1.1K20

    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.4K82

    在 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是最有用的。

    5K10

    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 集成测试。

    4.2K42

    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-n的mapping非常方便使用 2.在项目中加载这些创建好的文件建议加载到一个新的项目比如BusinessModule。

    81440

    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.6K50

    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开发是很好的借鉴。

    2K50

    Fluent NHibernate之旅二--Entity Mapping

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

    1K90

    NHibernate详解

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

    70930

    一系列令人敬畏的.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.8K30
    领券