首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

NHibernate SchemaExport 進階:表約束、預存程序與視圖自動化部署

     編輯:關於.NET

表與約束生成控制

透過映射檔屬性精確控制 DDL:

需求映射寫法生成 SQL 片段
非空 + 長度<property name="Name" not-null="true" length="50"/>Name NVARCHAR(50) not null
外鍵命名<many-to-one ... foreign-key="FK_Product_Category"/>constraint FK_Product_Category foreign key ...
唯一約束unique="true"Name NVARCHAR(50) not null unique
複合唯一鍵兩欄位同 unique-key="UK_Customer_Name"unique (FirstName, LastName)
索引index="IDX_Product_Name"create index IDX_Product_Name on ProductSchema (Name)
Check 約束<column name="UnitsOnStock" check="UnitsOnStock >= 0"/>UnitsOnStock INT null check(UnitsOnStock >= 0)

預存程序與視圖部署

映射檔使用 <database-object>:

<database-object>
  <create>CREATE PROCEDURE entitySProcs AS SELECT ...</create>
  <drop>DROP PROCEDURE entitySProcs</drop>
</database-object>

視圖特殊處理

NHibernate 會將視圖映射類別誤認為資料表並建立同名表。解法:加入額外 <database-object> 在建立階段 DROP TABLE 再建立視圖。

<database-object>
  <create>drop table dbo.viewCustomer</create>
  <drop>drop table dbo.viewCustomer</drop>
</database-object>
<database-object>
  <create>CREATE VIEW [dbo].[viewCustomer] AS SELECT ...</create>
  <drop>drop view dbo.viewCustomer</drop>
</database-object>

雙重 database-object 確保:建立時先刪表再建視圖,刪除時同時刪表與視圖。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved