小编Fik*_*man的帖子

密钥“身份验证”值无效

我有一个 .NET Core 3.0 应用程序,正在尝试使用 EF Core 和 Active Directory 集成身份验证连接到 Azure SQL 数据库。
我已验证我可以从我的计算机访问此数据库,因为我可以使用 SQL Server Management Studio 和“Azure Active Directory 集成”身份验证很好地连接到它。

但是,当我尝试读取应用程序中的数据(使用 EF Core)时,我总是收到 System.Argument 异常,其中包含以下语句:

密钥“身份验证”值无效

异常详细信息指向数据库连接字符串。

因此,这是我的 dev appsettings.json 文件中的连接字符串:

"ConnectionStrings": { "MCDB": "服务器=tcp:dev-media-center-sql.database.windows.net,1433;初始目录=MediaCenter;持久安全信息=False;用户ID={我的用户ID}; MultipleActiveResultSets=False;加密=True;TrustServerCertificate=False;身份验证=Active Directory 集成;" },

我尝试直接在代码中对连接字符串进行硬编码,认为我的 JSON 可能有问题,但我仍然遇到相同的异常。

“Active Directory Integrated”不是“身份验证”关键字的有效值吗?如果不是,那是什么?我已经尝试过“ActiveDirectoryIntegrated”(不带空格)和/“Active Directory Integrated”/(转义双引号)但无济于事。

json azure azure-active-directory .net-core azure-sql-database

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

LINQ查询结合了分组和排序

我相对较新LINQ,目前正在开发一个结合分组和排序的查询.我将从这里开始一个例子.基本上我有一个任意的数字序列表示为字符串:

List<string> sNumbers = new List<string> {"34521", "38450", "138477", "38451", "28384", "13841", "12345"}
Run Code Online (Sandbox Code Playgroud)

我需要sNumbers在此列表中找到包含搜索模式(例如"384")的所有内容,然后返回已过滤的序列,sNumbers以便首先对以搜索模式("384")开头的序列进行排序,然后对sNumbers包含搜索模式的剩余部分进行排序某处.所以它会是这样的(请注意组中的字母排序):

{"38450", "38451", "13841", "28384", "138477"}
Run Code Online (Sandbox Code Playgroud)

这是我开始的方式:

outputlist = (from n in sNumbers
                where n.Contains(searchPattern
                select n).ToList();
Run Code Online (Sandbox Code Playgroud)

所以现在我们拥有包含搜索模式的所有数字.这就是我被困的地方.我知道在这一点上我需要将结果"分组"成两个序列.一个以搜索模式开始,另一个不是.然后按字母顺序在每个组中应用辅助排序.如何编写一个结合了所有这些的查询?

c# linq sorting list

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

cdk 使用 HTML 表格进行虚拟滚动

我对 angular 很陌生,现在已经被这个问题困扰了一天多。使用 Angular 7 和 angular/cdk 7.3.4 版。我想要完成的事情似乎很简单。我有一个很好的旧 HTML 表,其中包含大量行。我想在启用虚拟滚动的屏幕上显示它(使用 cdk-virtual-scroll-viewport)。我按照本教程来完成此操作:

https://www.thecodecampus.de/blog/virtual-scrolling-in-angular-7/

我在他们的页面上看到它在 stackblitz 中工作,但是当我在我的环境中尝试它时,什么也没有。chrome 调试器中没有错误,但屏幕上也没有任何错误。顶部的 h1 元素显示出来,但不显示表格本身。它被完全忽略。我在这里错过了什么。这是正确的方法吗?

谢谢您的帮助:

这是我的组件标记:

<h1>CRD component</h1>

<cdk-virtual-scroll-viewport [itemSize]="20">
    <table>
      <thead>
        <tr>
          <td>Name</td>
          <td>ID</td>
        </tr>   
      </thead>
      <tbody>
        <tr *cdkVirtualFor="let row of tableData">
          <td>{{row.name}}</td>
          <td>{{row.id}}</td>
        </tr>
      </tbody>
    </table>
  </cdk-virtual-scroll-viewport>
Run Code Online (Sandbox Code Playgroud)

这是组件代码:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-crd',
  templateUrl: './crd.component.html',
  styleUrls: ['./crd.component.css']
})
export class CrdComponent implements OnInit {
  name = 'Angular';

  tableData = [];

  constructor() { }

  ngOnInit() {
    for (let i …
Run Code Online (Sandbox Code Playgroud)

angular angular-cdk

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

过滤条件使用LINQ进行搜索

我对LINQ查询"更新"有另外一个问题,我有什么事情要发生但不确定这是否是最有效的方法.在我的项目中,我在一个真正的数据库中工作,但为了简单起见,我将把它简化为一个简单的员工列表:

var employees = new List<Employee>
        {
            new Employee { Id = 0, firstName = "James", LastName = "Bond", Manager = "M", StartDate = DateTime.Now },
            new Employee { Id = 1, firstName = "Eric", LastName = "Bond", Manager = "M", StartDate = DateTime.Now },
            new Employee { Id = 2, firstName = "Sue", LastName = "Milton", Manager = "Q", StartDate = DateTime.Now },
            new Employee { Id = 3, firstName = "Olivia", LastName = "Milton", Manager = "M", StartDate …
Run Code Online (Sandbox Code Playgroud)

c# linq

4
推荐指数
1
解决办法
835
查看次数

将实体框架与任务并行库结合使用

我有一个使用 .NET 4.0 和 EF 6.0 开发的应用程序。程序的前提相当简单。观察文件系统上的特定文件夹。当一个新文件放入此文件夹时,在 SQL Server 数据库中查找有关此文件的信息(使用 EF),然后根据找到的内容将文件移动到文件系统上的另一个文件夹。文件移动完成后,返回数据库并更新有关此文件的信息(注册文件移动)。

这些是大型媒体文件,因此每个文件都可能需要一段时间才能移动到目标位置。此外,我们可能会使用数百个位于源文件夹中的媒体文件来启动此服务,这些媒体文件需要分派到目标位置。

所以为了加快速度,我开始使用任务并行库(异步/等待不可用,因为这是 .NET 4.0)。对于源文件夹中的每个文件,我在数据库中查找有关它的信息,确定它需要移动到哪个目标文件夹,然后开始一个开始移动文件的新任务......

LookupFileinfoinDB(filename)
{
  // use EF DB Context to look up file in DB
}

// start a new task to begin the file move
var moveFileTask = Task<bool>.Factory.StartNew(
                () =>
                    {
                        var success = false;

                        try
                        {
                         // the code to actually moves the file goes here…
                         .......
                         }
                      }
Run Code Online (Sandbox Code Playgroud)

现在,一旦此任务完成,我必须返回数据库并更新有关文件的信息。这就是我遇到问题的地方。(请记住,我可能有几个“移动文件任务”并行运行,它们将在不同的时间完成。目前,我正在使用任务继续在数据库中注册文件移动:

filemoveTask.ContinueWith(
                       t =>
                       {
                           if (t.IsCompleted && t.Result)
                           {
                             RegisterFileMoveinDB();
                           }
                       }
Run Code Online (Sandbox Code Playgroud)

问题是我使用相同的数据库上下文在主任务中以及稍后在嵌套任务上执行的 RegistetrFilemoveinDB() …

c# sql-server multithreading entity-framework task-parallel-library

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