我有一个带有一堆存储过程的SQL Server 2008数据库.当我使用Subsonic 3.0.0.3提供的ActiveRecord模板时,它会为我的所有存储过程生成方法,但它们没有任何参数.我是服务器上的dbo,可以执行存储过程,而没有来自Management studio的问题.
示例存储过程
CREATE PROCEDURE [dbo].[prc_Sample]
@FileName VARCHAR(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF EXISTS ( SELECT * FROM Sample WHERE FileName = @FileName )
BEGIN
RETURN -1
END
RETURN 0
END
Run Code Online (Sandbox Code Playgroud)
样本生成方法
public StoredProcedure prc_Sample(){
StoredProcedure sp=new StoredProcedure("prc_Sample",this.Provider);
return sp;
}
Run Code Online (Sandbox Code Playgroud)
如果我检查SQLServer.ttinclude,我可以看到所有获取存储过程的方法都存在,但由于某种原因它们没有生成.这不是存储过程名称中有下划线的问题 - 这可以在有和没有下划线的情况下被破坏.
任何想法或任何人都知道如何调试模板文件?
如果我有一个带有同步方法的应用程序,在UI线程上调用异步方法是否安全,或者是否存在问题或潜在的死锁情况?我知道调用Wait肯定会引起问题,但我觉得这样可能会好起来的.
public void MyMainMethod(){
var getResult = Task.Run(async () => { await getResultAsync(); }).Result;
myLabel.Text = getResult;
}
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地在UI线程上成功运行,但我觉得我可能会遗漏某些东西.我知道我可以使用Task和ContinueWith,但在这个例子中,我想在退出同步方法之前等待async方法的结果.
更新/澄清
在上面的示例中,假设MyMainMethod是重写的方法或属性等,并且不能修改为异步.
使用HttpClient时是否有保证取消帖子的方法?我目前有一个调用PostAsync,我试图使用cancellationToken取消,但它似乎并没有实际中止/停止操作.我仍然可以看到我上传的图片已正确发布.
我在这里做错了还是HttpClient可能在上传之前没有处理取消令牌?
var sc = new StreamContent(uploadFile.Data);
content.Add(sc, uploadFile.FieldName, uploadFile.FileName);
var request = new HttpRequestMessage
{
RequestUri = new Uri(ApiImageUrlUpload),
Content = content
};
request.Headers.TryAddWithoutValidation("User-Agent", _sessionManager.UserAgent);
request.Headers.TransferEncodingChunked = true;
using(cancellationToken.Register(() => httpClient.CancelPendingRequests()))
httpResponse = await HttpClient.PostAsync(new Uri(ApiImageUrlUpload), content, cancellationToken);
Run Code Online (Sandbox Code Playgroud)