반응형
1. DB 모델링
작업 순서
- database 모델링
- Database 를 C# class 모델로 생성
- nhinbernate에서 제공하는 cfg.xml과 nhm
nhibernate를 실습하기 위한 Db를 요렇게 만들었다
CREATE TABLE [dbo].[Contact] (
[FirstName] [varchar] (50) NULL,
[LastName] [varchar] (50) NULL,
[ID] [int] IDENTITY(1 ,1) NOT NULL,
CONSTRAINT [PK_Contact] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY]
) ON [PRIMARY]
클래스로 선언하면
namespace NHibernateTutorialPart1
{
public class Contact
{
public virtual int ID { get; set ; }
public virtual string FirstName { get; set ; }
public virtual string LastName { get; set ; }
}
}
요렇게 생겻지...
1.1 xml document 만들고 파일명은 hibernate.hbm.xml로 하자
파일명에 hbm가 들어가 있어야 NHibernate가 자동으로 분석한다.
1.2 hibernate.hbm.xml에 스키마 설정
myDB.hbm.xml 클릭후 nhibernate에서 받은 1번에서 다운받은 hibernate-datamapping.xsd를 적용해야한다.
적용방법은 그림처럼
1.3 nhibernate 설정
새로운 xml 를 추가하고 파일명은 hibernate.cfg.xml 로 하자
다음 내용을 추가하자.
<?xml version=" 1.0" encoding=" utf-8" ?>
<hibernate-configuration xmlns=" urn:nhibernate-configuration-2.2">
<session-factory>
< property name ="connection.provider ">
NHibernate.Connection.DriverConnectionProvider
</ property>
< property name ="dialect ">
NHibernate.Dialect.MsSqlCeDialect
</ property>
< property name ="connection.driver_class ">
NHibernate.Driver.SqlClientDriver
</ property>
< property name ="connection.connection_string ">
Data Source=localhost;Initial Catalog= <!--Database Name--> ;Integrated Security=True;Pooling=False
</ property>
< mapping assembly ="NHibernateTutorialPart1 "/>
</session-factory>
</hibernate-configuration>
1.4 *.xml 속성 변경
hibernate.cfg.xml, hibernate.hbm.xml 파일 속성에서
빌드작업, 출력 디렉터리로 복사를 포함 리소스, 항상복사로 변경할것
2. Database 연결 프로그램 작성
private void Form1_Load(object sender, EventArgs e)
{
cfg = new Configuration ();
cfg.Configure( "hibernate.cfg.xml");
mySessionFactory = cfg.BuildSessionFactory();
mySession = mySessionFactory.OpenSession();
using (mySession.BeginTransaction()) {
Contact loContact = new Contact { FirstName = "abc", LastName = "Last" };
mySession.Save(loContact);
mySession.Transaction.Commit();
}
}
3. 최종 프로젝트 모양
'IT > C#, NHibernate' 카테고리의 다른 글
NHibernate Many-to-one, one-to-Many tutorial, example (0) | 2016.09.07 |
---|---|
NHibernate no persister for error가 발생할때 (0) | 2016.09.07 |
nhibernate 설치방법 및 환경설정 (0) | 2016.09.04 |
C# image를 byte 배열(Array)로, byte 배열(Array)을 image로 바꾸는 방법 (0) | 2011.09.30 |
[C#] string 문자열 가운데 공백 제거 (1) | 2011.08.17 |