.NET Core 2.0 中引入的全局查询过滤器对于软删除来说非常方便。但如果出现这种情况,我如何看到那些软删除的数据呢?假设管理员想要具体查看谁被软删除。这意味着我必须以某种方式绕过该查询过滤器。现在我想我可以使用一个NotMapped属性来指示我是否想要绕过它,但我正在寻找最佳实践。
所以目前我的想法是,使用一个NotMapped属性
[NotMapped]
public bool IncludeDeletedFields { get; set; } = false;
Run Code Online (Sandbox Code Playgroud)
并在全局过滤器中使用它,例如
builder.HasQueryFilter(p => p.IncludeDeletedFields ? p.IsDeleted || !p.IsDeleted : !p.IsDeleted);
Run Code Online (Sandbox Code Playgroud)
但还有更好的办法吗?
我的目录如下:
Root:Create.php
Root/resource/js:ajaxLibrary.js
在我的create.php文件中,我有一个如下所示的表单:
<form id="form_profile_new" enctype="multipart/form-data">
<!--some input fields-->
<button id="showLeft_details" onclick="submit_basic()" value="Create" style="float:right;">Create</button> <!--create-->
</form>
<script src="resource/js/ajaxLibrary.js"></script>
Run Code Online (Sandbox Code Playgroud)
我的ajaxLibrary.js看起来像这样:
function submit_basic(event) {
//var formData = new FormData($(this)[0]);
//event.preventDefault();
$.ajax({
url: 'resource/php/submit_basic.php',
type: 'POST',
data: 'hello',
async: false,
success: function(response) {
alert("Profile Successfully Created!");
show_profile_sideMenu();
},
cache: false,
contentType: false,
processData: false
});
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码,ajax工作并警告消息,然后页面重新加载.如果我使用preventDefault()函数,那么ajax甚至不会运行.如果我取消注释使用FormData对象的第一行,则ajax不会发出警报但会重新加载页面.这有什么不对?谁能解释一下?提前致谢.
在我的存储过程中,我使用以下查询:
SELECT COUNT(*) INTO COL_NO FROM user_tab_columns WHERE table_name='PAY_SLIP_FEB_16';
Run Code Online (Sandbox Code Playgroud)
此查询不会出错(因为它不应该).但这里的表名是固定的,所以我想使用一个提供表名的变量.所以我改变了这样的查询:
EXECUTE IMMEDIATE 'SELECT COUNT(*) INTO COL_NO FROM user_tab_columns WHERE table_name='''||TBL_NAME||'''';
Run Code Online (Sandbox Code Playgroud)
此查询给出错误:
ORA-00905: missing keyword
Run Code Online (Sandbox Code Playgroud)
我做错了什么?TIA.
注意:TBL_NAME是提供表名称的传入参数,COL_NAME只是NUMBER(5,0)类型变量.