我正在尝试执行以下操作:
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
我开始想知道我是不是在这里遇到反模式,所以请告知最佳实践.
我正在设计一个带有一组各种端点的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似乎也是一种过度杀伤,也是维护地狱.
而且我想要的最后一件事是请求的几个基类的复杂关系,因为这可能是一个更糟糕的主要问题.
那么,请求<>响应处理的正确方法是什么?
编辑:关于'基于意见'的标志 - 我正在寻找处理这个问题的最佳做法.我知道它可以通过多种方式完成,但我想避免使用地雷/反模式.另外,我要说到目前为止我对这些答案非常满意.
我注意到以下行为.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()它按预期工作.
这是什么原因以及如何控制?
谢谢
我正在尝试使用 BouncyCastle PGP SDK 解密 PGP 加密字符串。
我尝试了几种方法,在每种情况下,我都会在过程开始时遇到以下错误(具体位置如下所示):
流 47 中的未知对象
到目前为止,我已经尝试了两个 nuget 包:
我尝试了两篇文章中介绍的方法:
我尝试了三种获取测试密钥和加密字符串的方法:
目前我的代码如下所示:
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) 我有一个使用本地代理运行单元测试(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位)
我正在查看 Xamarin 的官方文档,他们似乎鼓励使用 statics/singleton 进行数据库连接,这对我来说似乎很奇怪:
这种方法创建了一个在应用程序运行时保持打开的单个数据库连接,因此避免了每次执行数据库操作时打开和关闭数据库文件的费用。静态 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)
单例——单例模式提供了一种方式,在这种方式中,只有特定对象的单个实例才能存在。例如,在移动应用程序中使用 SQLite 时,您只需要一个数据库实例。使用单例模式是确保这一点的简单方法。
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 团队为什么要推广这种方法吗?是否因为它们的框架的某些特殊性而有所不同?更重要的是,如果不是这样,那么正确的方法是什么?
前一段时间,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编辑器?
(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 …
我有一个 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) 我有一个功能应用程序:
我还为函数应用程序设置了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管理服务有关?
我该如何进一步解决这个问题?
c# ×4
azure-devops ×3
azure ×2
architecture ×1
asp.net-core ×1
azure-boards ×1
azure-repos ×1
bouncycastle ×1
database ×1
docker ×1
dto ×1
encryption ×1
iprogress ×1
mobile ×1
pgp ×1
rest ×1
singleton ×1
sqlite ×1
tfvc ×1
xamarin ×1