小编Dan*_*man的帖子

首先在代码中添加新列后删除默认约束

使用代码优先迁移向表中添加新的非可空列时,它将自动为您创建默认值.这是有道理的,因为现有行需要具有新列的值(因为它不能为null).那很好,但是在那个值分配到处之后,我不再需要了.它是不可空的,因为我想确保始终显式插入值.如果一切都默认为''或0,那么我将拥有魔术字符串.所以无论如何,我可以提出一个解决方案,我并不感到兴奋,但它确实有效.

添加列后,我删除默认约束.

public override void Up()
{
    AddColumn("dbo.SomeTable", "NewColumn", c => c.Int(nullable: false));
    Sql(Helpers.DropDefaultConstraint("dbo.SomeTable", "NewColumn"));
}
Run Code Online (Sandbox Code Playgroud)

...

public static string DropDefaultConstraint(string table, string column)
{
    return string.Format(@"
        DECLARE @name sysname

        SELECT @name = dc.name
        FROM sys.columns c
        JOIN sys.default_constraints dc ON dc.object_id = c.default_object_id
        WHERE c.object_id = OBJECT_ID('{0}')
        AND c.name = '{1}'

        IF @name IS NOT NULL
            EXECUTE ('ALTER TABLE {0} DROP CONSTRAINT ' + @name)
        ",
        table, column);
}
Run Code Online (Sandbox Code Playgroud)

PROS:一旦实现了辅助方法,我只需要添加一条简单的行来删除约束.缺点:似乎没有必要创建索引只是为了删除它.

另一种方法是改变生成的迁移,因此我们添加它可以为空,更新所有值,然后使其不可为空.

public override void Up()
{
    AddColumn("dbo.SomeTable", "NewColumn", c …
Run Code Online (Sandbox Code Playgroud)

t-sql ef-migrations

26
推荐指数
1
解决办法
6776
查看次数

从ASP.NET MVC操作调用ConfigureAwait

我正在编写演示文稿,并认为以下内容应该失败,因为ActionResult没有在正确的上下文中返回.我用VS加载测试它并没有错误.我调试了它,知道它正在切换线程.所以它似乎是合法的代码.

ASP.NET不关心客户端应用程序上的上下文或线程吗?如果是这样,AspNetSynchronizationContext提供了什么目的?我觉得在行动本身中放置一个ConfigureAwait是不对的.这件事似乎有些不对劲.谁能解释一下?

    public async Task<ActionResult> AsyncWithBackendTest()
    {
        var result = await BackendCall().ConfigureAwait(false);
        var server = HttpContext.Server;
        HttpContext.Cache["hello"] = "world";
        return Content(result);
    }
Run Code Online (Sandbox Code Playgroud)

async-await asp.net-mvc-4

16
推荐指数
1
解决办法
3569
查看次数

使用异步操作运行同步代码

我有一个搜索操作有两个路径,一个只返回一个简单视图的同步路径,一个异步路径,异步执行搜索,然后返回一个视图.两者都是GET请求,因此它们是同一行动的一部分.

问题是当我访问动作"localhost:XXXX/Home/Search"时,页面无限加载.使用Fiddler,我可以看到请求永远不会返回.我调试了它,它使它到最后一行代码,但是,再次,请求没有完成.

我已将repro简化为以下内容:

public async Task<ActionResult> Search() 
{ 
    return View(); 
} 
Run Code Online (Sandbox Code Playgroud)

VS11警告我,代码将在没有等待的情况下同步运行,这很好,但请求没有完成.

这有用吗?或者我需要在这里做点什么吗?

编辑

这是针对.NET 4.5的MVC 4.

编辑2

对于那些在代码中看得更清楚的人来说,这就是我在异步操作中需要同步的原因:

public async Task<ActionResult> Search(string query = null)
{
    if (string.IsNullOrWhiteSpace(query))
        return View(new SearchViewModel());   // never loads

    var model = await _someService.SearchAsync(query);
    return View(model);    // loads
}
Run Code Online (Sandbox Code Playgroud)

async-await asp.net-mvc-4

14
推荐指数
1
解决办法
6103
查看次数

14
推荐指数
1
解决办法
4326
查看次数

无法为Facebook创建SSL/TLS安全通道

我已经使用Facebook在生产中实施了一段时间的社交登录.截至今天早上,它已不再适合我.我在dev(没有SSL)和生产中得到了相同的错误,它在Azure网站上托管,并且确实使用SSL.

这是我看到的错误:

[WebException: The request was aborted: Could not create SSL/TLS secure channel.] System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) +283 System.Net.WebClient.DownloadString(Uri address) +100 DotNetOpenAuth.AspNet.Clients.FacebookClient.QueryAccessToken(Uri returnUrl, String authorizationCode) +350 DotNetOpenAuth.AspNet.Clients.OAuth2Client.VerifyAuthentication(HttpContextBase context, Uri returnPageUrl) +202 DotNetOpenAuth.AspNet.OpenAuthSecurityManager.VerifyAuthentication(String returnUrl) +411 Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthenticationCore(HttpContextBase context, String returnUrl) +189 Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthentication(String returnUrl) +139

其他人看到这个?我的Google登录功能继续正常运行.

c# ssl facebook dotnetopenauth

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

在ASP.net中使用带有azurereader2的image404

我使用以下插件来调整ASP.net应用程序中的图像大小AzureReader2工作正常image404工作正常,但当我尝试访问blob网址时,它不会重定向,它是给予

The remote server returned an error: (404) Not Found.
Run Code Online (Sandbox Code Playgroud)

http://imageresizing.net/plugins/image404

http://imageresizing.net/plugins/azurereader2

有人用过image404和azurereader2吗?它与此兼容吗?

asp.net azure imageresizer

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

使用params object []构造函数的属性会产生不一致的编译器错误

我收到了错误

属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

请注意下面的截图:

在此输入图像描述

请注意,如果我将DataRow属性与一个或三个参数一起使用,则不会出现编译错误.但是如果我使用两个参数而第二个参数是一个字符串数组,那么我确实会遇到编译错误.

DataRowAttribute的签名是public DataRowAttribute (object data1);public DataRowAttribute (object data1, params object[] moreData);

第一个给了我没问题,但第二个似乎变得困惑.

我认为params object[]可能会引起一些混乱.也许它无法确定我的意思[DataRow(new[] { 1 }, new[] { "1" })]还是[DataRow(new[] { 1 }, "1")]

为了解决这个问题,我尝试将第二个属性转换为object([DataRow(new[] { 1 }, (object)new[] { "1" })]),但错误没有消失,它警告我演员阵容是多余的.我也尝试明确指定数组的类型,但这也没有帮助.

我可以添加第三个虚拟参数,即使null似乎解决了这个问题,但这只是一种解决方法.这样做的正确方法是什么?

c# .net-attributes

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

Build Artifact和Pipeline Artifact任务之间有什么区别?

在Azure DevOps中,我们具有下载 / 发布生成工件任务和下载 / 发布管道工件任务。

构建工件任务和管道工件任务之间有什么区别?何时选择一个而又一个呢?

azure-devops azure-pipelines

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

如何在不使用迁移的情况下使用LocalDB和EF

我在VS 2012 RTM上,使用EF 5.我正在执行Code First,但是因为我刚刚开发,所以试图忽略代码迁移.为了避免它们,我有这套

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>());
Run Code Online (Sandbox Code Playgroud)

偶尔,即使我不认为我触及了模型,它也决定重新创建.没关系.但它通常会导致错误

无法删除数据库,因为它当前正在使用中.

所以我决定完全删除数据库.我进入VS,转到"SQL Server对象资源管理器",找到数据库并删除它.现在我被困在了

无法将文件"{0}"附加为数据库"{1}"

我昨晚发生这种情况,我只是摆弄它直到它工作(关闭任务,重新启动VS,更改web.config中的数据库和文件名等.

所以问题1)我如何摆脱这种状态?

但更重要的问题是,我如何防止自己进入这种状态呢?

ef-code-first asp.net-mvc-4 entity-framework-5 localdb

7
推荐指数
2
解决办法
3992
查看次数

CA1801 与 IDE0060

在 VS 2019 中,未使用的参数现在在“错误列表”中显示两个问题,而不是一个:CA1801,显示为警告,IDE0060,显示为建议。

这些分析规则做同样的事情吗?如果不是,它们有什么不同。如果是这样,为什么它们是重复的?

roslyn roslyn-code-analysis visual-studio-2019

7
推荐指数
1
解决办法
348
查看次数