我正在维护的 LightSwitch 应用程序有一个有趣的问题,存在混淆的空间,因此将尝试详细解释并回答任何澄清问题。
我有一个 LightSwitch AddEdit 屏幕,使用表中布尔值的默认“翻转开关”控件,设置为是/否选项(因此显示是或否作为值,实际上保存 0 或 1),在创建新条目时,控件默认显示“否”。问题在于,根据用户拥有的权限,控件的行为会有所不同,或者:
1)预期/期望的行为:翻转开关默认设置为“否”,如果屏幕保存而不触摸它“否”被保存到数据库中(用户看到的和保存的内容是一致的,翻转switch 永远不会为 NULL)。
2) 意外行为:翻转开关看起来设置为“否”,但当用户尝试保存屏幕时,收到警告“错误:无法继续。页面上存在验证错误”,因为存在布尔值不允许 NULL (相关的翻转开关用“此字段是必需的”突出显示)用户可以将翻转开关控件切换为是并返回到否,此时屏幕将保存(触摸控件似乎设置它到 NULL 的值),但令人不安的是,其他允许 NULL 的翻转开关被保存为 NULL 而不是它们在屏幕上显示的“否”,这是令人困惑和有问题的,并且需要用户重新输入所有 NULL 条目一旦我修复了这个错误。
到目前为止我所做的故障排除表明,该行为取决于用户设置的 LightSwitch 访问控制权限,如果他们在一个组中(系统管理员),他们在另一个组(数据库操作员)中获得行为 1,他们获得 2。
如果将新行添加为 SystemAdministrator,则它似乎也取决于“添加”而不是“编辑”,数据将作为行为 1 添加。如果编辑现有条目,您将获得行为 2 作为两种权限。
我测试了注释掉过滤该表的数据源权限的 VB 代码(TableName_CanRead、TableName_CanWrite、TableName_CanInsert、TableName_CanUpdate、TableName_CanDelete、TableName_CanExecute、TableName_Filter),因为这似乎是一个可能的差异点,它并没有改变行为.
我希望更熟悉 LightSwitch 环境的人能够将我指向另一个可能出现此问题的地方,并提供一些关于在哪里查找或进一步故障排除步骤的提示。我目前看不到权限组如何显着影响翻转开关控制行为