商信互联
您可以允许应用程序管理员创建自定义的持久字段并在UI中显示添加的字段的数据,而无需重新编译应用程序。在此示例中,SkypeID字段将被添加到MainDemo应用程序中的Contact业务对象。
以下各节描述了从应用程序设置到运行时自定义的实现自定义持久字段的过程。
确保您的应用程序不违反以下条件。否则,将无法在运行时创建新的持久字段。
以下功能不能一起使用。
使用此配置,您的应用程序从数据库加载有关自定义持久性字段的信息,然后更新数据库架构。但是,建立数据库连接后,线程安全数据层不支持更改数据模型。
中间层安全性-WCF服务,Workflow Server服务或创建和配置ServerApplication / XafApplication的任何其他应用程序无法访问在客户端XAF应用程序项目中添加的自定义字段(在代码中或在XAFML中),或者无法通过在运行时自定义应用程序模型。您应该在一个通用模块中添加一个自定义字段,并在所有要使用它的应用程序中对其进行引用。
在应用程序代码中应用以下更改,以允许应用程序管理员在UI中创建和显示自定义持久字段数据。
将静态ModelMemberReadOnlyCalculator.AllowPersistentCustomProperties属性设置为true,以允许在运行时创建持久字段。打开Module.cs(Module.vb)文件,并将以下代码添加到模块的构造函数中。
将IObjectSpaceProvider.CheckCompatibilityType属性设置为CheckCompatibilityType.DatabaseSchema,以捕获数据库更改并在修改架构后更新数据库。
有必要确定哪种类型的模型编辑器适合您的应用程序:独立的还是内置的。
内置的模型编辑器
管理员使用WinForms应用程序时,可以调用内置的“模型编辑器”工具来向应用程序模型添加自定义字段。使用此模型编辑器类型,管理员可以编辑存储在应用程序数据库中的模型差异和XAFML文件中的模型差异。
独立的模型编辑器
如果管理员仅使用ASP.NET应用程序且Model Differences存储在XAFML文件中,则首选使用独立的Model Editor。有关如何使用此工具的信息,请参阅“调用模型编辑器的方式”主题的“部署和运行独立模型编辑器”部分。
请按照以下步骤在最终用户工作站上添加自定义持久字段。
使用工具|调用内置的模型编辑器。在运行时编辑模型命令或关闭应用程序,然后通过运行DevExpress.ExpressApp.ModelEditor.v 19.2 .exe可执行文件来启动独立的模型编辑器。
如果使用独立的模型编辑器,请指定应用程序配置文件的路径(例如MainDemo.Win.exe.config或Web.config),然后在“打开模型”对话框中单击“打开” 。
导航到BO_Model | 左侧树中的联系人节点。右键单击OwnMembers子节点,然后选择添加... | 成员。
将新添加的节点的名称属性设置为“ SkypeID”。然后,将IsCalculated属性设置为“ False”,将类型设置为“ System.String”,将大小设置为“ 32”,将标题设置为“ Skype ID”。
如果正在使用内置的“模型编辑器”,请使用“合并差异”命令复制在管理员层中引入的差异。否则,请跳过此步骤,然后转到下一个步骤。
导航到视图| 左侧树中的Contact_DetailView节点。右键单击该项目的子节点,然后选择添加... | PropertyEditor。
将PropertyName和Id设置为“ SkypeID”。
重点关注“布局”节点。右键点击右侧显示的表单预览中的空白区域,然后选择自定义布局。
将Skype ID项目从调用的“自定义”窗口拖动到表单中的适当位置。
您也可以使用类似的方法将Skype ID列添加到“联系人列表”视图中(请参阅“列表视图列自定义”)。
如果应用程序安装在多台PC上,并且管理员的Model Differences存储在Model.xafml文件中,请将其从应用程序的工作文件夹复制到每台PC。否则,创建的字段将仅在添加它的工作站上可用。
使用DBUpdater工具将映射到新创建的自定义持久性字段的列添加到数据库。
打开命令提示符,将当前目录更改为应用程序工作目录,然后运行以下命令。
DBUpdater.v 19.2 .exe MainDemo.Win.exe.config -forceUpdate