簡體   English   中英

NHibernate的用戶定義字段

[英]User Defined Fields with NHibernate

我需要向使用NHibernate的asp.net c#應用程序添加用戶定義的字段功能。

用戶必須能夠“即時”從系統中的幾個對象中添加和刪除字段,最好沒有任何系統停機時間。

一個重要的約束是用戶不能更改數據庫架構-也就是說,我可以添加支持此功能所需的任何字段/表,但是當用戶添加或刪除字段時,他不能更改數據庫架構。

編輯:我還必須通過用戶定義的字段的值進行排序和篩選。

我知道如何在C#/ SQL中使用鍵/值表來執行此操作,但是我不知道如何使用NHibrenate進行操作(包括按用戶定義的字段進行過濾和排序)

聽起來您只想添加名稱/值屬性表。

有一個表定義名稱(例如ID,FIELDNAME,DESCRIPTION),另一個定義值(例如ID,NAME_FK,OBJECT_FK,VALUE)。

讓用戶在NAME表中添加新行以添加新屬性,並通過在VALUE表中添加行,在NAME表中使用外鍵以及要將其附加到的任何對象來添加值。

然后,您的視圖可以查詢以OBJECT_FK為鍵的VALUE表,並使用NAME_FK引用屬性名稱。

編輯:NHibernate不會將新值視為實際屬性,但是如果將它們映射為集合,則應該能夠使用ICriteria查詢和過濾:

IList<MyProp> props = session
  .CreateCriteria(typeof(MyProp))
  .Add(Expression.Eq("ObjectName", "Widget"))
  .Add(Expression.Eq("Name", "Size"))
  .List<MyProp>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM