小编Kir*_*eed的帖子

如何在Entity Framework 4.4中实现DBSet.AddOrUpdate?

为了回应Slauma对我在Windows XP上运行使用EF的应用程序问题的回答,我 将我的应用程序从Entity Framework 5.0转换回使用Entity Framework 5.0和目标框架.NET 4.0(也称为Entity Framework 4.4)

但是我遇到以下错误;

System.Data.Entity.DbSet<MyEntity> does not contain a definition for AddOrUpdate 
and no extension method of a type System.Data.Entity.DbSet<MyEntity> accepting a 
first argument of type System.Data.Entity.DbSet<MyEntity> could be found.
(Are you missing a using directive or assembly reference )
Run Code Online (Sandbox Code Playgroud)

我已经尝试搜索此错误消息的片段,但没有取得多大成功.奇怪的是,在这个微软链接中甚至没有提到4.4甚至 没有EF4.4的SO标签

entity-framework code-first

13
推荐指数
2
解决办法
8056
查看次数

在Azure中,为什么AuthClientId也称为应用程序ID?

我发现Azure中的应用程序注册非常混乱.在我的问题中, AuthClientId和Application Id结果是一样的,为什么要使用两个名字呢?

这种命名选择背后的逻辑是什么?

[更新]

从Joy的链接到我看到的词汇表

应用程序ID(客户端ID)

"Azure AD向应用程序注册发出唯一标识符,用于标识特定应用程序和相关配置.此应用程序ID(客户端ID)在执行身份验证请求时使用,并在开发时提供给身份验证库."

我看到客户端ID链接到一个网页在ietf.org 其中规定

"2.2.客户标识符

授权服务器向注册客户端发出客户端标识符 - 表示客户端提供的注册信息的唯一字符串.

我想这个比喻都是关于供应商,客户,产品关系.供应商是Active Directory,产品是认证,客户是应用注册.

作为客户的"应用程序注册"的概念,我很难习惯.我寻求帮助理解单词的选择.

多租户应用程序的想法并不真正适用于"客户端"的比喻.

[更新]此链接是最有用但最具权威性的链接复制

1.1.角色

OAuth定义了四个角色:

资源所有者能够授予对受保护资源的访问权限的实体.当资源所有者是一个人时,它被称为最终用户.

资源服务器托管受保护资源的服务器,能够使用访问令牌接受和响应受保护资源请求.

客户端代表资源所有者及其授权进行受保护资源请求的应用程序.术语"客户端"并不暗示任何特定的实现特征(例如,应用程序是在服务器,桌面还是其他设备上执行).

授权服务器成功验证资源所有者并获取授权后,服务器向客户端发出访问令牌.

授权服务器和资源服务器之间的交互超出了本规范的范围.授权服务器可以是与资源服务器相同的服务器或单独的实体.单个授权服务器可以发出由多个资源服务器接受的访问令牌.

但它仍然令人困惑.

"代表资源所有者及其授权进行受保护资源请求的应用程序"

"代表资源所有者提出受保护的资源请求"是什么意思?

[更新]

在研究了Wayne Yang的回答后,我在Slack的oauth页面上找到了这张照片 OAuth 2.0授权代码授予流程

azure oauth-2.0 azure-active-directory azure-keyvault

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

如何解决 Azure Dev Ops 中的拉取请求合并冲突?

在 DevOps UI 中,我创建了一个 PR 将我的分支合并到 master 中。但是 UI 指示存在冲突。 拉取请求用户界面

我想通过接受编辑的分支来解决冲突。然而,用户界面中似乎没有任何东西可以做到这一点。

我查看了这个问题,其中提到 DevOps 没有此功能。然而它似乎如此接近,以至于我觉得我可能只是错过了一些东西。

[更新]

我一圈圈地赞同和赞同并发表评论。最后我注意到完整组合右侧的汉堡菜单。 汉堡菜单

我尝试重新启动合并,但它似乎没有做任何事情。

azure-devops

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

在以下主要来源中找不到包

我建立了一个构建管道来创建Nuget软件包并将其发布到工件中的提要中。

我能够成功使用Feed。

但是,当我再次运行管道,导致程序包再次发布时,我无法成功更新使用项目。

即使我可以在软件包管理器中看到正确的新版本号(Visual Studio->工具-> Nuget软件包管理器->管理Nuget软件包以获取解决方案)

单击安装时出现错误

Package '<mypackagename with version number>' is not found in the following primary source

<correct feed nuget/v3/index.json> Please verify all your online package sources are available (OR) package id, version are specified correctly.
Run Code Online (Sandbox Code Playgroud)

.net nuget-package azure-devops

12
推荐指数
4
解决办法
1642
查看次数

无法构建:获取https://registry-1.docker.io/v2/microsoft/aspnetcore/manifests/1.1:未授权:用户名或密码不正确

我的aspnetcore docker项目构建,但是当我单击Docker按钮(或按F5)运行时,我得到了

Severity    Code    Description Project File    Line    Suppression State
Error   MSB4018 The "PrepareForLaunch" task failed unexpectedly.
Microsoft.DotNet.Docker.CommandLineClientException: Creating network "dockercompose1627893588_default" with the default driver
Building pswebapi
Service 'pswebapi' failed to build: Get https://registry-1.docker.io/v2/microsoft/aspnetcore/manifests/1.1: unauthorized: incorrect username or password.

For more troubleshooting information, go to http://aka.ms/DockerToolsTroubleshooting ---> Microsoft.DotNet.Docker.CommandLineClientException: Creating network "dockercompose1627893588_default" with the default driver
Building pswebapi
Service 'pswebapi' failed to build: Get https://registry-1.docker.io/v2/microsoft/aspnetcore/manifests/1.1: unauthorized: incorrect username or password
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.DotNet.Docker.DockerComposeClient.<ExecuteAsync>d__18.MoveNext()
   --- End of …
Run Code Online (Sandbox Code Playgroud)

docker dockerhub asp.net-core

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

错误 NU5049 不支持 SDK 样式项目的 pack 命令

我的解决方案包含 Framework 4.8 项目、.Net Standard 2.1 项目和 .net6 项目。它已经运行了几周,没有出现任何问题。

\n

今天构建管道开始失败并出现错误

\n
\n

##[错误]nuget 命令失败,退出代码(1) 和错误(错误 NU5049:不支持 SDK 样式项目的 pack 命令,请使用\ndotnet pack 或 msbuild -t:pack 来打包此项目。您可以通过将\n\xe2\x80\x98NUGET_ENABLE_LEGACY_CSPROJ_PACK\xe2\x80\x99 环境变量设置为 \xe2\x80\x98true\xe2\x80\x99 来覆盖此行为。\n错误 NU5000: 无法构建包。

\n
\n

我尝试编辑 YAML 将命令从 pack 更改为 dotnet pack,但出现值不接受错误。

\n

错误

\n

[更新]

\n

我试图确切地了解如何更正语法。\n我尝试在任务栏中输入 dotnet 并得到以下内容\n选择

\n

我尝试了 .Net Core 但它插入的命令有 -task:DotNetCoreCLI@2\n 这也不起作用。

\n

dotnet pack 的 YAML 是什么?

\n

我的 YAML 如下

\n
trigger:\n- master\n\npool:\n  vmImage: \'windows-2022\'\n\nvariables:\n  solution: \'**/*.sln\'\n  buildPlatform: \'Any CPU\'\n  buildConfiguration: \'Release\'\n  Major: \'2\'\n  Minor: \'0\'\n …
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines-yaml

10
推荐指数
2
解决办法
3806
查看次数

EF迁移:将索引字段更改为可空时出错

我初始迁移中的代码如下

        CreateTable(
            "dbo.Sites",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Description = c.String(maxLength: 450)
                })
            .PrimaryKey(t => t.Id);
Run Code Online (Sandbox Code Playgroud)

为了使Description字段是唯一的,我将以下内容添加到UP方法的末尾

CreateIndex("dbo.Sites","Description",唯一:true);

后来我决定要求描述字段.

新迁移会产生以下更改

AlterColumn("dbo.Sites","Description",c => c.String(nullable:false,maxLength:450));

但是,当此更改尝试运行时,我收到错误

ALTER TABLE ALTER COLUMN描述失败,因为一个或多个对象访问此列.

我能够使用分析器隔离SQL行,如

ALTER TABLE [dbo].[Sites] ALTER COLUMN [描述] nvarchar NOT NULL

当我在Management Studio中运行它时,会出现以下错误

消息5074,级别16,状态1,行1索引'IX_Description'取决于列'描述'.消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN描述失败,因为一个或多个对象访问此列.

如何获取迁移代码以删除索引,然后更改更改列,然后重新构建索引?

我正在使用SQL Server 2008 R2

ef-migrations entity-framework-5

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

在不使用IDbContextFactory的情况下编写第一个自定义连接字符串和迁移代码

我正在尝试编写一个易于理解的DBContext类,它采用自定义连接字符串,可以运行迁移,并且我允许使用包管理器生成迁移.

我好像在四处走动.

我已经能够使用对我来说非常糟糕的代码来使用它.我在关于连接字符串和迁移的这个问题的答案中记录了这一点.

Radek的答案看起来比我的好,但是我发现当我实现它然后尝试在Package Manager中创建一个迁移时,我得到了消息

目标上下文'DataLayer.Context'不可构造.添加默认构造函数或提供IDbContextFactory的实现.

DataLayer.Context我的上下文类在哪里.

我不想提供一个实现IDbContextFactory(并且Radek的答案似乎表明它不需要)

更新:

如果我包含一个没有参数的构造函数,我可以生成一个迁移.例如

public Context() : base("ConnectionStringName") { }
Run Code Online (Sandbox Code Playgroud)

对于我的上下文创建,我在app.config中传递连接字符串的名称

public Context(string connString) : base(connString)
{
    Database.SetInitializer(new CustomInitializer());
    Database.Initialize(true);
}
Run Code Online (Sandbox Code Playgroud)

最后,我既可以生成迁移,也可以为用户选择的数据库运行迁移.

但是:当我删除数据库然后运行我的应用程序时,我遇到了问题.

我正在使用的初始化代码,来自上面的链接

public class CustomInitializer : IDatabaseInitializer<Context>
{       
    public void InitializeDatabase(Context context)
    {
        try
        {
            if (!context.Database.Exists())
            {
                context.Database.Create();
            }
            else
            {
                if (!context.Database.CompatibleWithModel(false))  
                {
                    var configuration = new Configuration();
                    var migrator = new DbMigrator(configuration);
                    migrator.Configuration.TargetDatabase =
                        new DbConnectionInfo(context.Database.Connection.ConnectionString);
                    IEnumerable<string> migrations = migrator.GetPendingMigrations();
                    foreach …
Run Code Online (Sandbox Code Playgroud)

c# migration ef-code-first

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

如何卸载不可用的nuget包?

我已经将我的项目移动到一台新机器,并且无法访问旧的机器本地存储的名为SBD.Common的旧nuget包.

我想从项目中卸载软件包当我使用Manage Nuget Packages作为解决方案时,我可以看到软件包已安装但在此源中不可用.

当我单击卸载按钮时出现错误

An error occured while trying to restore the packages" Unable to find version '1.0.0' of 'SBD.Common'

c:\Program files(x86)\Microsoft SDKS\NugetPackages\:Package 'SBD.Common.1.0.0' is not found on source 'C:\Program Files(x86)\Microsoft SDKs\NuGetPackages\' 
https://api.nuget.org/v3/index.json:Package 'SBD.Common.1.0.0' is not found
Run Code Online (Sandbox Code Playgroud)

如何告诉我的项目我不想在没有访问包的情况下恢复此包?

这是我在C:\ Users\MyName\AppData\Roaming\NuGet的Nuget.Config

   <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
  <disabledPackageSources>
    <add key="Microsoft and .NET" value="true" />
  </disabledPackageSources>
  <packageRestore>
    <add key="enabled" value="False" />
    <add key="automatic" value="False" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我正在使用Nuget版本3.4.4.1321

nuget

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

在使用框架 4.7.2 运行 SDK 项目的 vs2019 中,控件和表单缺少图标和视图设计器选项

到目前为止的总结答案:如果 csproj.user 文件存在,则表单和控件仅在设计器中打开。

问题故事:

我有两个控件,它们都继承自基本控件。但是解决方案资源管理器中缺少控制图标 缺少图标

良好的控制源始于

public partial class UniTabMaterialsControl : UnitabBaseControl
{
    public UniTabMaterialsControl()
    {
        InitializeComponent();
    }
Run Code Online (Sandbox Code Playgroud)

不良控制源始于

public partial class UniTabMaterialsControl : UnitabBaseControl
{
     
    public UniTabMaterialsControl()
    {
        InitializeComponent();
    }
Run Code Online (Sandbox Code Playgroud)

基本控制类是

public class UnitabBaseControl : UserControl
{
}
Run Code Online (Sandbox Code Playgroud)

我尝试关闭并重新打开 Visual Studio

[更新]

我添加了一个新的用户控件并将其设置为也继承自 UnitabBaseControl ,奇怪的是行为得到了纠正。

然后我能够删除新控件并保持正确的行为

Git 显示 UnitabBaseControl.cs 发生了变化,但除了 UserControl 文本的颜色之外我没有看到什么变化

基类颜色已更改

然后我对整个解决方案进行了新的克隆。这次,从 UnitabBaseControl 继承的所有控件都显示了不正确的行为

[更新]

现在我在表格方面遇到了同样的问题

表单未显示正确的图标

using System.Windows.Forms;

namespace SBD.VivSnap.UI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

using System.Windows.Forms; …
Run Code Online (Sandbox Code Playgroud)

c# user-controls visual-studio winforms csproj-user

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