今天我在SQL Server中了解了一个叫做的东西INNER LOOP JOIN.
这是什么意思?(谷歌没有帮助..或者我应该说......关于它的博客文章有点......技术性,并且让我大吃一惊).
此外,使用INNER LOOP JOIN超标准的一些常见场景是什么好主意INNER JOIN?
我在我的标准上做了一些简单的MS单元测试,没有什么特别的控制器.
当我检查属性时,ViewName从返回的ViewResult对象中,它是""(空的).
我的印象ViewName是它的名称暗示View(正如这篇 关于ASP.NET MVC控制器测试的MS文章所建议的那样).
顺便说一句,当我测试ViewData时,它就在那里并且正确.
这是我的代码......
public ActionResult Index(int? page, string tag)
{
if (page == null || page <= 0)
{
page = 1;
}
var viewData = new IndexViewData
{
... my property setters, etc ...
};
return View(viewData);
}
[TestMethod]
public void Index_Action_Should_Return_Index_View_For_Default_HomePage()
{
// Arrange.
var controller = PostController; // Wrapper, cause I use D.I.
// Act.
ViewResult viewResult = …Run Code Online (Sandbox Code Playgroud) 我有以下扩展方法:
public static void ThrowIfArgumentIsNull<T>(this T value, string argument)
where T : class
{
if (value == null)
{
throw new ArgumentNullException(argument);
}
}
Run Code Online (Sandbox Code Playgroud)
这是它的用法的一个例子....
// Note: I've poorly named the argument, on purpose, for this question.
public void Save(Category qwerty)
{
qwerty.ThrowIfArgumentIsNull("qwerty");
....
}
Run Code Online (Sandbox Code Playgroud)
工作100%罚款.
但是,我不喜欢我必须提供变量的名称,只是为了帮助我的异常消息.
我想知道是否有可能重构扩展方法,所以可以像这样调用它...
qwerty.ThrowIfArgumentIsNull();
Run Code Online (Sandbox Code Playgroud)
它会自动确定变量的名称是'qwerty',因此将其用作ArgumentNullException的值.
可能?我假设反思可以做到这一点?
我在SQL Server 2008数据库的表上有以下触发器.它正在递归,所以我需要阻止它.
插入或更新记录后,我试图只更新该表上的单个字段.
这是触发器:
ALTER TRIGGER [dbo].[tblMediaAfterInsertOrUpdate]
ON [dbo].[tblMedia]
BEFORE INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE @IdMedia INTEGER,
@NewSubject NVARCHAR(200)
SELECT @IdMedia = IdMedia, @NewSubject = Title
FROM INSERTED
-- Now update the unique subject field.
-- NOTE: dbo.CreateUniqueSubject is my own function.
-- It just does some string manipulation.
UPDATE tblMedia
SET UniqueTitle = dbo.CreateUniqueSubject(@NewSubject) +
CAST((IdMedia) AS VARCHAR(10))
WHERE tblMedia.IdMedia = @IdMedia
END
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何防止触发器插入再次触发另一个触发器?
我正在尝试使用jQuery通过调用一些自定义API Ajax/$.getJSON.
我正在尝试将自定义值传递给Ajax回调方法,但该值未被传递并且实际上被覆盖.这是我的代码:
var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;
$("#loading_status").show();
$.getJSON(url, null, function(results, locationType) {
searchResults(results, locationType)
});
Run Code Online (Sandbox Code Playgroud)
locationType使用AJAX调用URL 时BEFORE 的值是3.但是在调用成功返回数据之后,locationType现在的值为success.这是因为回调的方法签名是:
callback(data,textStatus)如果请求成功则执行的回调函数.
如何将一个或多个参数传递给回调方法?
非常简单的问题:当我有一个可持久的对象时,它通常有一个名为ID的属性(用于抽象类).
那么..是命名约定ID还是Id?
例如.
public int ID { get; set; }
Run Code Online (Sandbox Code Playgroud)
要么
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
欢呼:)
PS.这适用于.NET btw.FXCop conformat将是一个奖金.
我正在使用Nuget的Dapper 1.31.我有这个非常简单的代码片段,
string connString = "";
string query = "";
int val = 0;
CancellationTokenSource tokenSource = new CancellationTokenSource();
using (IDbConnection conn = new SqlConnection(connString))
{
conn.Open();
val = (await conn.QueryAsync<int>(query, tokenSource.Token)).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
当我按下F12时QueryAsync,它指向我
public static Task<IEnumerable<T>> QueryAsync<T>
(
this IDbConnection cnn,
string sql,
dynamic param = null,
IDbTransaction transaction = null,
int? commandTimeout = null,
CommandType? commandType = null
);
Run Code Online (Sandbox Code Playgroud)
CancellationToken它的签名没有.
问题:
tokenSource.Cancel()是否真的取消了该方法,因为我不知道如何生成长时间运行的SQL查询.请问.Cancel()真的取消方法,并抛出OperationCancelledException?谢谢!
请注意stackoverflow的默认域名是http://stackoverflow.com,如果您尝试转到http://www.stackoverflow.com,它会将您反弹到http://stackoverflow.com?
这是什么原因?不是技术原因(如在http代码中等),但为什么网站所有者想要这样做?
我知道它纯粹是美学的,我总是有www和不是的主机标题,但有没有理由将用户反弹到单个域,无论是否为subheaded?
没有子域称为裸域.谢谢偷看!从来不知道它有一个术语:)
感谢您到目前为止的答案 - 请注意我明白www.domain.com可以指向domain.com.这不是一个问题,我是否应该提供两者或两者,或者,它会问为什么有些网站默认为裸域而不是www子域,反之亦然.干杯.
杰夫阿特伍德实际上已经解释了为什么他在这里和这里的裸域都消失了.(点头致Jonas Pegerfalk的帖子:))
Jeff的帖子(以及此主题中的其他人)也谈到了带有cookie和静态图像的裸域问题.基本上,如果您在裸域中使用cookie,则也强制所有子域.解决方案是购买另一个域,由Yahoo Perf团队在此处发布.
我试图找出将记录插入单个表的最佳方法,但前提是该项目尚不存在.在这种情况下,KEY是NVARCHAR(400)字段.对于此示例,我们假设它是牛津英语词典中单词的名称/在此处插入您的fav词典.另外,我猜我需要将Word字段作为主键.(该表也将具有唯一标识符PK).
所以...我可能会得到这些我需要添加到表格中的单词...
例如.
所以传统上,我会尝试以下(伪代码)
SELECT WordID FROM Words WHERE Word = @Word
IF WordID IS NULL OR WordID <= 0
INSERT INTO Words VALUES (@Word)
Run Code Online (Sandbox Code Playgroud)
即.如果该单词不存在,则插入它.
现在..我担心的问题是我们得到了大量的命中..所以有可能这个词可以从SELECT和INSERT之间的另一个进程插入...这会引发一个约束错误?(即比赛条件).
然后我想我可能会做以下事情......
INSERT INTO Words (Word)
SELECT @Word
WHERE NOT EXISTS (SELECT WordID FROM Words WHERE Word = @Word)
Run Code Online (Sandbox Code Playgroud)
基本上,当它不存在时插入一个单词.
除了错误的语法之外,我不确定这是坏还是好因为它如何锁定表(如果它确实)并且不是表上的表现,它会获得大量读取和大量写入.
那么 - 你的Sql大师怎么想/做什么?
我希望有一个简单的插入和"捕获",任何错误抛出.
我需要将我的SqlCE3.5数据库更新为4.0.
当我尝试使用新的CE4.0连接提供访问我的3.5 sdf /数据库时,我收到以下错误消息: -
System.Data.EntityException:基础提供程序在Open上失败.---> System.Data.SqlServerCe.SqlCeInvalidDatabaseFormatException:数据库文件已由早期版本的SQL Server Compact创建.请使用SqlCeEngine.Upgrade()方法升级.
谁知道我怎么做到这一点?显然我需要以编程方式进行,但我不确定我应该做什么/我需要添加什么参考,等等.
干杯!
visual-studio-2010 sql-server-ce entity-framework-4 sql-server-ce-4
.net ×3
sql-server ×3
asp.net-mvc ×1
async-await ×1
bare-domain ×1
c# ×1
callback ×1
controller ×1
dapper ×1
fxcop ×1
inner-join ×1
insert ×1
javascript ×1
join-hints ×1
jquery ×1
sql ×1
subdomain ×1
t-sql ×1
triggers ×1
unique ×1
unit-testing ×1