[英]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.