我正在使用存储过程在sql db中创建/更新记录.我从C#数据访问层提供了大约30个参数.sql表具有除其主键列之外的所有列null.这里当我向null able列提供一个空值时,它抛出了一个异常"过程或函数"spFullUpdate'期望参数'@ App1TAPAYears',这是未提供的." 在我的c#代码中,我可以清楚地看到该列提供了一个空值.可以请任何人告诉我如何纠正这个问题.以下是我的代码段.设置数据对象的值如下
Dt.TimeAtPreviousAddressYears = int.TryParse(TimeatPreviousAddressYears.Text, out intOut) ? intOut : (int?)null;
Run Code Online (Sandbox Code Playgroud)
以下是我的实体类中的可空属性
public int? TimeAtPreviousAddressYears { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的数据访问层添加参数代码如下
cmd.Parameters.Add("@App1TAPAYears", SqlDbType.Int).Value = dataObject.TimeAtPreviousAddressYears;
SqlDataAdapter da = new SqlDataAdapter(cmd);
conn.Open();
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
可以清楚地看到,添加了参数并将空值提供给nullable列,但它仍然产生异常.任何人的帮助将非常感激.
亲切的Regardds
我有以下 GraphQL 查询
query {
Result: querydata {
name
code
description
}
}
Run Code Online (Sandbox Code Playgroud)
返回给我以下数据
{
"data": {
"Result": [
{
"name": "Class1",
"code": "ST1",
"description": "Value"
},
{
"name": "Class1",
"code": "ST2",
"description": "Value"
},
{
"name": "Class2",
"code": "FS1",
"description": "Value"
},
{
"name": "Class2",
"code": "FS2",
"description": "Value"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
在此数据中,我有一个名称字段,可以是“Class1”或“Class2”。我不想以可以将 Class1 和 Class2 数据分开的方式对这些数据进行分组。有没有办法做到这一点。我可以通过提供名称过滤器运行 2 个单独的查询来实现这一点,但可以说我没有那个选项。
我想将结果转换如下
{
"data": {
"Result": [
"Class1": [
{
"code": "ST1",
"description": "Value"
},
{
"code": "ST2",
"description": "Value" …Run Code Online (Sandbox Code Playgroud) 我正在使用.ascx用户控件,其中我填写员工数据和员工图片.在点击员工图片时,我想显示一个对话框,我想要一个文本字段和一个文本框供用户输入.Click事件正常,但是通过对话框,它给出了"Microsoft JScript运行时错误:对象不支持属性或方法'对话框'"的错误.请任何人帮我填写一个带有文本字段和文本框的对话框.我是JQUERY的新手,并努力让它发挥作用.
在下面的代码片段中,我添加了一个在线查找的示例中的对话框代码.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="OpenAccessDataProvider,a4a794260c0b4440b466f75d11146db8.ascx.cs" Inherits="SitefinityWebApp.SfCtrlPresentation.OpenAccessDataProvider_a4a794260c0b4440b466f75d11146db8" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.Comments" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.Fields" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<telerik:RadListView ID="dynamicContentListView" ItemPlaceholderID="ItemsContainer" runat="server" EnableEmbeddedSkins="false" EnableEmbeddedBaseStylesheet="false">
<LayoutTemplate>
<ul class="sfitemsList sfitemsListTitleDateTmb">
<asp:PlaceHolder ID="ItemsContainer" runat="server" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li class="sfitem sfClearfix">
<h2 class="sfitemTitle">
<sf:DetailsViewHyperLink ID="DetailsViewHyperLink" TextDataField="Title" runat="server" />
</h2>
<sf:AssetsField ID="AssetsField1" runat="server" DataFieldName="Picture" />
<sf:SitefinityLabel …Run Code Online (Sandbox Code Playgroud) 我有以下SQL存储过程,其中包含一个输入参数和一个out参数.
CREATE PROCEDURE [dbo].[spCanUserEdit]
(
@username nvarchar(255)
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CanEdit bit
SELECT
@CanEdit = CanUserEdit
FROM tblUsers
WHERE username = LOWER(@username)
RETURN SELECT @CanEdit
END
GO
Run Code Online (Sandbox Code Playgroud)
在上面的存储过程中,CanUserEdit列tblUsers是位类型列,默认值为0.现在,当我在Management Studio中执行此过程时,它运行正常,但是当我command.ExecuteScalar()在我的C#代码中使用时,它总是返回null.谁能告诉我这里我做错了什么.
以下是我的C#方法
public static bool CanUserEdit(string userName)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[Constants.ConnectionStringName].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spCanUserEdit";
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@username", userName));
conn.Open();
bool canEdit = (bool)cmd.ExecuteScalar();
return …Run Code Online (Sandbox Code Playgroud) 在我的解决方案中,我有一个 ASP.NET Core Web 项目和一个 .NET Standard 类库项目。类库项目是数据访问层,我想从我的数据访问层中的 appsettings.json(ASP.NET Core 项目)读取连接字符串。
我找到了几个答案,例如Andrii Litvinov看起来很容易实现,但他也提到了通过依赖注入来实现。我不想选择简单的快捷方式而是寻找依赖注入实现?
我不确定在我的类库中是否有 appsettings.json 然后通过 IConfigurationRoot 注册它是更好的选择(如JRB 在此解释)但在我的场景中,连接字符串位于 web 项目的 appsettings.json 文件中,并且我不想在我的类库项目中使用构造函数依赖注入实现来使用连接字符串。
c# connection-string dependency-injection class-library asp.net-core-2.0
我扩展了IdentityUserRole,如下所示
public class ApplicationUserRoles : IdentityUserRole<string>
{
[Key]
public string ApplicationId { get; set; }
public virtual AspNetApplications AspNetApplications { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的AspNetApplications类如下
public class AspNetApplications
{
[Key]
public string ApplicationId { get; set; }
public string ApplicationName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
迁移已在DB中创建了AspNetApplications和ApplicationUserRoles表.屏幕截图如下.
以下是我的身份模型
public class ApplicationUser : IdentityUser
{
public virtual AspNetApplications AspNetApplication { get; set; }
public virtual ApplicationUserRoles AspNetUserRoles { get; set; }
//public virtual ICollection<AspNetApplicationUsers> AspNetApplicationUsers { get; set; }
public async Task<ClaimsIdentity> …Run Code Online (Sandbox Code Playgroud) 我知道 IMemoryCache.Set 是一个扩展方法,所以它不能被嘲笑。人们已经为这种情况提供了解决方法,例如 NKosi在这里提供的解决方法。我想知道如何为我的数据访问层实现这一点,其中我的 MemoryCache 返回一个值,当找不到它时,它从数据库中获取数据,将其设置为 MemoryCache 并返回所需的值。
public string GetMessage(int code)
{
if(myMemoryCache.Get("Key") != null)
{
var messages= myMemoryCache.Get<IEnumerable<MyModel>>("Key");
return messages.Where(x => x.Code == code).FirstOrDefault().Message;
}
using (var connection = dbFactory.CreateConnection())
{
var cacheOptions = new MemoryCacheEntryOptions { SlidingExpiration = TimeSpan.FromHours(1) };
const string sql = @"SELECT Code, Message FROM MyTable";
var keyPairValueData = connection.Query<KeyPairValueData>(sql);
myMemoryCache.Set("Key", keyPairValueData, cacheOptions );
return keyPairValueData.Where(x => x.Code == code).FirstOrDefault().Message;
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我的单元测试 - 当然它不起作用,因为我无法模拟 IMemoryCache
[Fact]
public void GetMessage_ReturnsString()
{
//Arrange …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过使用“npm”任务为我的 Vue.js 应用程序自动化构建过程(Azure Devops)。
为了安装节点包,我使用了带有内置“安装”命令的 npm 任务。
对于构建过程,我部署了另一个 npm 任务,但使用自定义命令(构建)。此自定义构建命令成功运行并显示以下警告
“npm WARN build 'npm build' 没有参数调用。你的意思是'npm run-script build'?”
我相信它根本没有像我去 Copy Publish Artifact 那样进行构建,它说
复制的文件总数:0。[警告]目录“D:\a\3\a\drop”为空。不会添加任何内容来构建工件“掉落”。
我尝试过“npm run-script build”命令,但收到错误
“NPM 失败,返回码:1”
有一些堆栈溢出线程(此处),人们将构建称为安装的内部命令。如果确实如此,为什么我看不到安装命令创建的 dist 文件夹,或者我的自定义命令 npm 任务有问题?
package.json 文件中的脚本部分
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
Run Code Online (Sandbox Code Playgroud) 我试图用单引号包裹我的 DateTime 的日期格式
例如 DateTime.Now().ToString("yyyy-MM-dd") 输出将类似于“2017-03-30”
我的问题,有没有产生像“'2017-03-30'”这样的结果(即双引号内的单引号)?
我有一个没有任何控制器实现的 Asp Net Core API。客户端(Auth0 实现)正在传递一个 JWT 令牌(RS256 alg),我需要验证签名是否有效。我已经浏览了 Auth0 官方文档,建议实现 JwtBearer 并在启动配置中将应用程序设置为 UseAuthentication
Microsoft.AspNetCore.Authentication.JwtBearer
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// 1. Add Authentication Services
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.Authority = "https://myapi.auth0.com/";
options.Audience = "API/Endpoint";
});
}
Run Code Online (Sandbox Code Playgroud)
如上所述,此 API 中没有控制器,我无法使用 Authorize attrubute 装饰该方法,因此只能选择手动验证此签名。出于这个原因,我已经阅读了堆栈溢出帖子,其中人们提到了不同的方法,例如使用
System.IdentityModel.Tokens.Jwt
而其他人反对它并建议使用低级实现等。我已经尝试了几个但到目前为止没有成功。
假设以下方法是接收 JWT 令牌的 API 的入口点。请有人告诉我我需要做什么才能手动验证签名
public Task InvokeAsync(HttpContext context)
{
var accessToken = context.Request.Headers["Authorization"];
// Here I wan't to verify the signature? …Run Code Online (Sandbox Code Playgroud) 我试图通过其在iframe内的id获取'Form'元素的xpath.
在我查询时在chrome xpath插件中
// iframe中[含有(@ ID, 'fraModalPopup')]
它让我得到iframe,但当我尝试在层次结构中得到任何东西时,它只返回null.例如,如果我尝试做
// iframe [contains(@ id,'fraModalPopup')]/html //返回null
要么
// iframe [contains(@ id,'fraModalPopup')]/form [contains(@ id ='aspnetForm')] //不确定它是否是正确的xpath语句 - 也返回null
请任何人指导我如何抓住表单元素?我必须在RIDE(Robot Framework)中使用这个xpath.
c# ×6
sql ×2
asp.net-core ×1
asp.net-mvc ×1
azure-devops ×1
build ×1
date ×1
datetime ×1
graphql ×1
graphql-java ×1
jquery ×1
jwt ×1
mocking ×1
moq ×1
npm ×1
npm-install ×1
roles ×1
selenium ×1
unit-testing ×1
xpath ×1
xunit ×1