小编Bar*_*osz的帖子

EF Code-First一对一关系:Multiplicity在Role*关系中无效

我正在尝试执行以下操作:

public class class1
{
    public int Id {get;set;}
    [ForeignKey("Class2")]
    public int Class2Id {get;set;}
    public virtual Class2 Class2 {get;set;}
}

public class class2
{
    public int Id { get; set;}
    [Required]
    public virtual int Class1Id {get;set;}
    [Required]
    [ForeignKey("Class1Id")]
    public Class1 Class1 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

但是,每次我尝试迁移我的数据库时,都会收到以下错误:

Class1_Class2_Target :: Multiplicity在关系'Class2_Class1'中的角色'Class2_Class1_Target'中无效.由于"从属角色"属性不是关键属性,因此从属角色的多重性的上限必须为"*".

这可能是什么问题?

c# database entity-framework ef-code-first entity-framework-6

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

将DTO重用于各种请求/响应类型与显示所需内容/应返回的内容

我开始想知道我是不是在这里遇到反模式,所以请告知最佳实践.

我正在设计一个带有一组各种端点的REST API,我想将请求和响应参数包装到漂亮的DTO中.

例如,一些端点:

public async Task<JobStateResponse> GetJobState(JobStateRequest request);
public async Task<JobDownloadRespose> DownloadJob(JobDownloadRequest request);
public async Task<CreateJobResponse> CreateJob(CreateJobRequest request);
Run Code Online (Sandbox Code Playgroud)

问题是这些请求和响应是相对类似的DTO,例如:

public class JobStateResponse{
    public int TaskId {get;set;}
    public string ExternalId {get;set;}
    public State State {get;set;}
}
public class JobDownloadResponse {
    public int TaskId {get;set;}
    public string ExternalId {get;set;}
    public string JobContent {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我想为这些和继承创建一个基类,但在某些情况下,某些属性可能是多余的...这意味着这些方法没有明确指出它们工作所需的参数.

我的意思是,使用DTO参数公开API端点,该参数具有7个属性,但实际上只需要2个声音非常糟糕 ......

另一方面,为大多数端点维护单独的DTO似乎也是一种过度杀伤,也是维护地狱.

而且我想要最后一件事是请求的几个基类的复杂关系,因为这可能是一个更糟糕的主要问题.

那么,请求<>响应处理的正确方法是什么?

编辑:关于'基于意见'的标志 - 我正在寻找处理这个问题的最佳做法.我知道它可以通过多种方式完成,但我想避免使用地雷/反模式.另外,我要说到目前为止我对这些答案非常满意.

architecture rest dto asp.net-web-api

14
推荐指数
3
解决办法
5003
查看次数

使用IProgress.Report()报告进度时,控制台消息的顺序不正确

我注意到以下行为.IProgress填充控制台输出消息时,它们会显示在错误的文件夹中.

var recounter = new IdRecounter(filePath, new Progress<string>(Console.WriteLine));
                recounter.RecalculateIds();
Run Code Online (Sandbox Code Playgroud)

我正在努力提高我的封装,可重用性和设计技巧.所以,我有一个名为IdRecounter的类.我现在想在控制台应用程序中使用它,但稍后可能在WPF应用程序中使用它.

因此,我希望班级完全不知道它的环境 - 但同时我想报告"现场"行动的进展 - 因此,我使用IProgress类型,这将允许我将东西放入控制台,或者进入日志文件,或更新状态标签属性等.(如果不是这样的话,请告诉我)

因此,我注意到它倾向于以不正确的顺序将消息扔进控制台,例如处理文件1
处理文件4
处理文件5
处理文件3
全部完成!
处理文件2

当我切换IProgress(MyProgress.Report())时,Console.WriteLine()它按预期工作.
这是什么原因以及如何控制?

谢谢

c# console-application iprogress

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

BouncyCastle Open PGP - 流 47 中的未知对象

我正在尝试使用 BouncyCastle PGP SDK 解密 PGP 加密字符串。

我尝试了几种方法,在每种情况下,我都会在过程开始时遇到以下错误(具体位置如下所示):

流 47 中的未知对象

到目前为止,我已经尝试了两个 nuget 包:

  • BouncyCastle.OpenPGP v.1.8.1。
  • BouncyCastle-Ext v1.7.0

我尝试了两篇文章中介绍的方法:

我尝试了三种获取测试密钥和加密字符串的方法:

目前我的代码如下所示:

  public void DecryptFile(string inputFilePath, string outputPath)
    {
        using (FileStream fsEncryptedFile = File.Open(inputFilePath, FileMode.Open))
        using (Stream decoderStream = PgpUtilities.GetDecoderStream(fsEncryptedFile))
        {
            PgpObjectFactory factory = new PgpObjectFactory(decoderStream);
            PgpObject obj = factory.NextPgpObject(); //<-- ERROR THROWN HERE
            if (!(obj is PgpEncryptedDataList))
            {
                obj = factory.NextPgpObject(); 
            }
            PgpEncryptedDataList edl = obj as PgpEncryptedDataList;

            foreach (PgpPublicKeyEncryptedData data in edl.GetEncryptedDataObjects()) …
Run Code Online (Sandbox Code Playgroud)

c# encryption bouncycastle pgp

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

使用LOCAL代理在Azure Pipelines中运行测试期间有数千个E0434352.CLR异常

我有一个使用本地代理运行单元测试(nunit)的构建管道。

一切正常,直到我移至新笔记本电脑。在不对我的存储库或构建设置进行任何更改的情况下,现在生成的构建日志现在充满了以下消息:

2019-02-06T10:21:22.7514187Z [11:21:22]例外:E0434352.CLR

少于100个单元测试的消息超过7000条。其中一些测试是UI测试(使用TestStack.White),而某些是Web测试(使用Selenium)。
错误似乎不会影响测试的执行,因为测试通过了OK(如果有问题,则失败了)。

唯一发生变化的是Windows 10构建的较新版本以及可能必须重新下载的构建代理的较新版本。

由于错误没有说明,我该如何调试?

它可以与构建代理的版本相关吗?
生成代理可执行文件会自我更新吗?

为了消除错误,我已将代理从v144更新到v146,但没有更改(作为Windows,为64位)

azure-devops azure-pipelines

6
推荐指数
2
解决办法
1324
查看次数

为什么 Xamarin 文档建议使用单例进行数据库连接?

我正在查看 Xamarin 的官方文档,他们似乎鼓励使用 statics/singleton 进行数据库连接,这对我来说似乎很奇怪:

这里 https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/introduction/

这种方法创建了一个在应用程序运行时保持打开的单个数据库连接,因此避免了每次执行数据库操作时打开和关闭数据库文件的费用。静态 TodoItemDatabase 数据库;

public static TodoItemDatabase Database
{
  get
  {
    if (database == null)
    {
      database = new TodoItemDatabase(DependencyService.Get<IFileHelper>().GetLocalFilePath("TodoSQLite.db3"));
    }
    return database;
  }
}
Run Code Online (Sandbox Code Playgroud)

这里 https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_2_-_architecture/

单例——单例模式提供了一种方式,在这种方式中,只有特定对象的单个实例才能存在。例如,在移动应用程序中使用 SQLite 时,您只需要一个数据库实例。使用单例模式是确保这一点的简单方法。

在这里 https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/case_study-tasky/

TaskItemDatabase 是一个单例,确保所有访问都发生在同一个实例上。锁用于防止来自多个线程的并发访问。

public T GetItem<T> (int id) where T : BL.Contracts.IBusinessEntity, new ()
{
    lock (locker) {
        return Table<T>().FirstOrDefault(x => x.ID == id);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,虽然这是一个普遍不鼓励的想法,例如在这里: 通过单例类获取数据库连接 是单例方法适合访问/维护数据库和互联网连接

那么,知道 Xamarin 团队为什么要推广这种方法吗?是否因为它们的框架的某些特殊性而有所不同?更重要的是,如果不是这样,那么正确的方法是什么?

c# sqlite mobile singleton xamarin

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

Azure DevOps-使用GUI而不是YAML编辑构建管道

前一段时间,Azure DevOps添加了对YAML构建管道的支持。对于高级用户而言,这一切都是不错的选择(我明白了,专业人士仅使用命令行和纯文本工具,GUI则是弱项),原因有很多。

有没有办法回到GUI(经典编辑器)来编辑现有管道?我已禁用该功能

在此处输入图片说明

如此处所述https://docs.microsoft.com/zh-cn/azure/devops/pipelines/get-started-designer?view=azure-devops&tabs=new-nav,但是它仅对新管道有用。

不知何故,我还没有记住管道定义的语法和整套配置选项,所以...

我想使用GUI编辑我现有的管道,因为我没有时间阅读文档并寻找将确切的字符串添加到YAML的哪个位置才能设置一些简单的选项,但是,当我尝试编辑管道(它是在视觉上创建的)时,总是会进入YAML视图。

有没有办法打开GUI编辑器?

azure azure-devops azure-pipelines

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

Azure DevOps - organizing projects and repositories

(Posting the question here as this is the 'community' that Microsoft redirects to with a 'Need advice? Ask community' button. Hope it won't get closed as 'primarily opinion based' or 'too broad')

Hello,

I want to start using AzureDevops in my department for organizing code & work. We're a small team who creates a large number of applications & plugins.

Some of these applications have a very short lifecycle, i.e. we deliver them, and they work for years without …

tfvc azure-devops azure-pipelines azure-repos azure-boards

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

Visual Studio Docker Compose - 在调试会话结束后停止并删除容器

我有一个 ASP.NET Core Web 应用程序,我已将日志记录添加到 ElasticSearch 和 Kibana。
我在 Windows 主机上运行它,容器是 Linux。

docker-compose 文件设置为首先启动弹性搜索,然后是 kibana,最后是 Web 应用程序 - 如下:

version: '3.4'

services:
  
  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
    ports:
      - 9200:9200
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    environment:
      - xpack.monitoring.enabled=true
      - xpack.watcher.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    networks:
      - elastic

  kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.9.2
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    environment:
      - ELASTICSEARCH_URL=http://localhost:9200
    networks:
      - elastic

  hyena.webapp:
    image: ${DOCKER_REGISTRY-}hyena_image
    build:
      context: .
      dockerfile: Hyena.WebApp/Dockerfile
    ports:
      - "5001:443"
      - "5000:80"
    container_name: "hyena_container" 
    volumes:
      - …
Run Code Online (Sandbox Code Playgroud)

elasticsearch docker docker-compose asp.net-core

5
推荐指数
0
解决办法
178
查看次数

Azure Function Timer 触发器和 API 管理 - 手动执行返回 404

我有一个功能应用程序:

  • 由定时器触发器触发的一些功能
  • 还有一些由HTTP 触发器触发。

我还为函数应用程序设置了Azure API 管理服务,其中HTTP 触发函数定义了其端点。

我正在尝试按照此处的指南手动触发计时器触发功能之一https://learn.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http

然而,尽管看似正确的 URL 和x-functions-key.

功能: 在此输入图像描述

钥匙:

在此输入图像描述

请求:

在此输入图像描述

我还注意到:

  • 如果我不包含x-functions-key标题,那么我会得到401 Unauthorized结果
  • 如果我包含了不正确的密钥,那么我会得到403 Forbidden.

是否与为函数应用程序设置的API管理服务有关?

我该如何进一步解决这个问题?

azure azure-api-management azure-functions

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