小编Stu*_*tLC的帖子

SQL中常量的最佳模式?

我已经看到了几种用于"克服"SQL Server中缺少常量的模式,但它们似乎都没有满足性能和可读性/可维护性问题.

在下面的示例中,假设我们在表上有一个完整的"状态"分类,选项似乎是:

  • 只是为了硬编码,可能只是"评论"状态

-- StatusId 87 = Loaded
SELECT ... FROM [Table] WHERE StatusId = 87;
Run Code Online (Sandbox Code Playgroud)
  • 使用状态查找表,然后加入此表,以便该WHERE子句引用友好名称.

子查询:

SELECT ... 
FROM [Table] 
WHERE 
  StatusId = (SELECT StatusId FROM TableStatus WHERE StatusName = 'Loaded');
Run Code Online (Sandbox Code Playgroud)

或加入

SELECT ... 
FROM [Table] t INNER JOIN TableStatus ts On t.StatusId = ts.StatusId 
WHERE ts.StatusName = 'Loaded';
Run Code Online (Sandbox Code Playgroud)
  • 一堆标量UDF被定义为返回常量,即

CREATE Function LoadedStatus()
RETURNS INT
AS
 BEGIN
  RETURN 87
 END;
Run Code Online (Sandbox Code Playgroud)

然后

SELECT ... FROM [Table] WHERE StatusId = LoadedStatus();
Run Code Online (Sandbox Code Playgroud)

(IMO会导致数据库中出现大量污染 - 在Oracle软件包中可能没问题)

  • 使用表值函数的类似模式将常量值保存为行或列,这些都是CROSS APPLIED …

sql-server maintainability constants

9
推荐指数
2
解决办法
1714
查看次数

在连接派生表时获取"未为列1指定列"

我正在写一个left join并得到一个

没有为列1"错误指定列.

我究竟做错了什么?

LEFT JOIN 
(
   SELECT  CASE WHEN COUNT(*) > 1 THEN '' ELSE mycolumn END
   FROM 
    (
        SELECT code_value 
        FROM allocation 
        WHERE allocation.id='[val]'
        GROUP BY code_value
    ) grp
   GROUP BY code_value
) AS code4table
ON code4table.itemid = table1.id
Run Code Online (Sandbox Code Playgroud)

如果所有值都相同,我想返回code_value值,否则返回''我猜我还需要code4table.itemid在我的select查询中包含但不确定如何.

在此先感谢您的帮助.

sql-server join

9
推荐指数
1
解决办法
2万
查看次数

ASP.NET Core API - 在 Azure 应用服务上获取 404,但在本地主机上运行正常

我有一个托管在 Azure 应用服务中的 ASP.NET Core 2.1 应用。在本地执行时,我可以访问控制器。但是当我托管在 Azure 应用程序中时,我收到 404。以下是重现的最少步骤。

在 Visual Studio 2017 中添加一个新项目。选择 ASP.NET Core Web 应用程序。选择 ASP.NET Core 2.1,API 项目模板,无身份验证,配置为 HTTPS。将新应用作为自托管(不使用 IIS)运行。浏览到 https://localhost:5001/api/values。我得到了预期的响应(尽管命令行上有一个关于无法对 HTTPS 连接进行身份验证的异常)。

右键单击项目并选择发布。选择以创建新的应用服务。我选择了我现有的订阅、托管计划和资源组。我保留了默认的应用程序名称。创建应用程序。

浏览到 url https://app_name.azurewebsites.net,我看到了默认页面。浏览到https://appname.azurewebsites.net/api/values,我得到一个 404。

我确定我错过了一些非常愚蠢的东西,但我就是想不通。

azure asp.net-core-webapi

9
推荐指数
3
解决办法
4963
查看次数

ValidationMessage - 处理同一属性的多个错误

我在MVC中使用ValidationMessage控件.验证每个属性时,可能会显示多个错误消息,但ValidationMessage仅显示列表中的第一条错误消息.

这是一个例子:

ModelState["Key"] = new ModelState();
ModelState["Key"].Errors.Add("Error 1");
ModelState["Key"].Errors.Add("Error 2");
Run Code Online (Sandbox Code Playgroud)

在我有的HTML: <%= Html.ValidationMessage("Key")%>

显示: "Error 1"

我想在页面上看到所有错误消息 "Error 1 Error 2"

知道怎么做吗?

asp.net-mvc

8
推荐指数
2
解决办法
5431
查看次数

我们如何为连接字符串.config中使用的Sql Server实例名设置别名?

我有两个开发团队,来自不同的团队.

  • A组针对Sql Server 2008 R2 的本地默认实例进行开发;
  • B组针对Sql Server 2008 R2 的本地命名实例进行开发.

有没有办法设置别名,以便两个组编码相同的名称?现在我们正在进行一场连接字符串战争,因为B组改变(本地),./DEVA组再次改变它?

sql-server connection-string visual-studio-2010 sql-server-2008 entity-framework-4

8
推荐指数
1
解决办法
6372
查看次数

在C#中将string.Empty转换为(generic)T?

我有一个实用程序方法,它.INI使用签名从旧配置类型文件返回强类型值

internal static T GetIniSetting<T>(string config, string key, T defVal = default(T))
Run Code Online (Sandbox Code Playgroud)

我希望字符串是特殊的,因为在编码器没有指定默认值的情况下,我希望defaultValue的默认值是string.Empty,而不是default(string)(即为null).

if (cantFindValueInIniFile == true)
{
    if ((typeof(T) == typeof(string)) && (defaultValue == null))
    {
        // *** Code needed here - Cannot convert string to <T>***
        return (T)string.Empty; 
    }
    return defaultValue;
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过强制转换和as关键字,但无济于事.

c# generics casting

8
推荐指数
2
解决办法
1534
查看次数

XSLT等于condtional

我在XSLT中进行了这个简单的测试

<xsl:if test="isTrue = 'false'">
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何在这里做逻辑等于运算符.我知道<是"&"lt; 和>是"&"gt; 那么XSLT的逻辑等于运算符是什么?我尝试&eq; &等; ==和=,或者对于XSLT来说,你只能比较数字?

xslt logical-operators

8
推荐指数
1
解决办法
5万
查看次数

当TryUpdateModel无法在asp.net mvc 3中更新模型时,如何查找异常/错误

if (!TryUpdateModel<Event>(evt))
{ 
   // ... I need to retrieve the errors here
}
Run Code Online (Sandbox Code Playgroud)

有时,TryUpdateModel无法更新模型.我无法找到理由和例外?

asp.net-mvc asp.net-mvc-3

8
推荐指数
1
解决办法
3929
查看次数

错误NU5012 - nuget pack无法找到路径(/ bin/release/MyProject/bin/release)

我正在尝试通过运行命令更新我的nuget包nuget pack -properties Configuration=Release但这会给我以下错误:

无法找到'bin/Release/{project-name}/bin/Release'.确定该项目已经建成

我不太确定为什么它会进入我的Release文件夹,然后继续转到另一个Release文件夹,因为它不存在?我在这里迷路了,我不知道该怎么做.

nuget nuget-package nuget-cli

8
推荐指数
2
解决办法
2229
查看次数

错误从NUnit 2升级到NUnit 3时,"异步测试方法必须具有非void返回类型"

我必须重构从NUNIT 2到NUNIT 3的单元测试,并且以下语法抛出错误:

var expectedResponseMessage = new HttpResponseMessage();
Func<Task<HttpResponseMessage>> continuation = 
   () => Task.Factory.StartNew(() => expectedResponseMessage);
Run Code Online (Sandbox Code Playgroud)

错误:

异步测试方法必须具有非void返回类型

我怎么能改写这个?我尝试了很多语法,但没有运气.谢谢.

c# async-await nunit-3.0

8
推荐指数
1
解决办法
3374
查看次数