我正在实现一个自定义表单设计器。我现在到了我想将布局保存到数据库的地步。
技术限制
- .NET 4.0
- 休眠
- 流畅的 NHibernate
- MSSQL 2008 R2
这是我想出的一个设计:
控制表
- Id int 身份
- 输入 varchar(300)
控制属性表
- Id int 身份
- ControlId int FK 到 Controls.ID
- 名称 varchar(300)
- 值 varchar(最大值)
控制类
public class Control
{
public virtual int Id { get; set; }
public virtual string Type { get; set; }
public virtual Dictionary<string, string> Properties { get; set; }
}
然后我会映射它,这样我就可以做这样的事情来重新加载布局:
var controls = GetListOfControlsUsingNHibernate();
foreach (var control in controls){
var newControl = CreateControlFromType(control.Type);
SetPropertiesViaTypeDescriptor(newControl, control.Properties);
this.Controls.Add(newControl);
}
我有两个问题。
- 如何使用 Fluent NHibernate 映射这个?
- 有没有更好的方法不涉及 EAV 并将所有值存储为字符串?