我有很多实例需要在我的数据库中实现某种多态关联.我总是浪费大量的时间来思考所有的选择.这是我能想到的3.我希望有一个SQL Server的最佳实践.
这是多列方法

这是没有外键的方法

这是基表方法

sql-server associations polymorphic-associations database-normalization
我已经将Windows服务构建为"任何CPU".但是,当我在64位机器上运行时,它以32位运行.我该如何解决?我使用的是.NET和C#,我的操作系统是Windows 2008 R2.
如果我在x64中构建它,它会以64位模式正确加载.但是,"Any Cpu" - 这就是我想要的 - 加载32位,即使它运行的机器完全支持64位.
编辑以根据反馈添加更多信息
我们确实有第三方工具以及引用c ++托管程序集.这些可能是也可能不是为任何CPU构建的.事实上我知道c ++托管程序集只是为x86构建的.然而,奇怪的是,如果我专门指定x64,该进程将启动并在x64中工作.如果框架试图加载c ++托管程序集,它将失败.我不介意这一点,因为在代码中,如果我们以64位模式运行,我们不会加载32位托管++程序集.可能是因为构建数据,因为这里有32位程序集,它应该将启动过程(在本例中是一个Windows服务程序集)标记为x86?
在Windows 2003和Windows XP中,您可以右键单击程序集(.dll)转到属性,单击版本选项卡,然后您将看到3个不同的版本号:程序集版本,文件版本和产品版本.
如果您使用相同的文件并在Windows 2008中查看其属性,则只能看到文件版本和产品版本.
有没有办法在Windows Vista和更新版本(没有第三部分工具)中查看.NET程序集的程序集版本?
我不是在寻找用户SID.我正在寻找计算机SID,活动目录将用于唯一标识计算机.我也不想查询活动目录服务器,我想查询计算机本身.
我有一个用C#编写的Windows服务,它创建了一个卡车负载的线程并建立了许多网络连接(WMI,SNMP,简单的TCP,http).尝试使用服务MSC管理单元停止Windows服务时,停止服务的调用返回相对较快,但该过程继续运行约30秒左右.
主要问题是它可能需要30秒以上才能停止.我能找到什么,我该如何寻找它?
第二个问题是为什么服务msc管理单元(服务控制器)返回,即使进程仍在运行.有没有办法让它只在进程实际被杀死时返回?
这是服务的OnStop方法中的代码
protected override void OnStop()
{
//doing some tracing
//......
//doing some minor single threaded cleanup here
//......
base.OnStop();
//doing some tracing here
}
Run Code Online (Sandbox Code Playgroud)
编辑以响应Thread清理答案
你们中的许多人已经回答我应该跟踪我的所有线程然后清理它们.我不认为这是一种实用的方法.首先,我无法访问一个位置的所有托管线程.该软件非常庞大,包含不同的组件,项目甚至第三方dll都可以创建线程.我无法在一个位置跟踪所有这些,或者有一个所有线程检查的标志(即使我可以让所有线程检查一个标志,许多线程阻塞信号量之类的东西.当它们阻塞时它们可以检查.我将不得不让他们等待超时,然后再检查这个全局标志和等待.
IsBackround标志是一个有趣的事情要检查.但是,我怎么能知道我是否有运行arround的forground线程?我将不得不检查创建线程的代码的每个部分.有没有其他方法,也许是一个可以帮助我找到这个的工具.
但最终,这个过程确实停止了.我似乎只需要等待一些东西.但是,如果我在OnStop方法中等待X ammount时间,那么它将花费大约30秒+ X来停止.无论我尝试做什么,在OnStop返回实际停止的过程之后,过程似乎需要大约30秒(它不总是30秒,它可以变化).
这是在x64计算机上运行的.NET v4 Windows服务应用程序.在经过几天稳定运行后的某些时候,Windows服务内存消耗会像疯了一样飙升直到它崩溃.我能够以1.2 GB捕获它并捕获内存转储.这就是我得到的
如果我在我的转储文件上的windbg中运行!address -summary,我得到以下结果
!地址 - 简介
--- Usage Summary ------ RgnCount ------- Total Size -------- %ofBusy %ofTotal
Free 821 7ff`7e834000 ( 7.998 Tb) 99.98%
<unclassified> 3696 0`6eece000 ( 1.733 Gb) 85.67% 0.02%
Image 1851 0`0ea6f000 ( 234.434 Mb) 11.32% 0.00%
Stack 1881 0`03968000 ( 57.406 Mb) 2.77% 0.00%
TEB 628 0`004e8000 ( 4.906 Mb) 0.24% 0.00%
NlsTables 1 0`00023000 ( 140.000 kb) 0.01% 0.00%
ActivationContextData 3 0`00006000 ( 24.000 kb) 0.00% 0.00%
CsrSharedMemory 1 0`00005000 ( 20.000 …Run Code Online (Sandbox Code Playgroud) 我想创建一个可以使用WinRM而不是WMI收集系统信息(Win32_blablabla)的小应用程序.我怎么能用C#做到这一点?
主要目标是使用WS-Man(WinRm)而不是DCOM(WMI).
首先,我是Linux新手,请原谅我.
我已经发布了一个ASP .NET Core应用程序作为针对Ubuntu的独立应用程序.发布似乎工作正常.我已将文件复制到一台非常香草的Ubuntu机器上.现在,我如何运行我的应用程序?我的理解是,因为它是一个独立的.NET Core应用程序,所以我不需要下载和安装.NET Core.我的应用应该包含它需要的一切.
所有教程似乎都说我应该调用$ dotnet run.但是"dotnet"命令行不存在(是否应该发布到自包含的文件夹中?)所以如果我调用它,我会得到"找不到命令".当然我可以下载.NET Core,但这不是违背整个自包含的概念吗?这是我正在复制的文件的示例.
我有一个用C#编写的应用程序,可以进行大量的字符串比较.字符串从各种来源(包括用户输入)中提取,然后进行比较.然而,当将空间'32'与非破坏空间'160'进行比较时,我遇到了问题.对于用户来说,他们看起来一样,所以他们希望匹配.但是,当应用进行比较时,没有匹配.
最好的方法是什么?我是否必须去代码的所有部分进行字符串比较并手动将不间断空格标准化为空格?.NET提供了什么帮助吗?(我已经尝试了所有的比较选项,但似乎没有任何帮助.)
有人建议我在收到后对字符串进行规范化,然后让字符串比较方法简单地比较规范化的字符串.我不确定这样做是否直截了当,因为首先是标准化的字符串.我也将它标准化了什么?当然,现在我可以将非破坏空间转换为破碎空间.但还有什么可以出现?可能有很多这些规则吗?他们甚至可能会发生冲突.(在一种情况下,我想使用规则而在另一种情况下,我不想.)
我正在尝试根据 github 工作流程中的另一个环境变量设置一个环境变量。我尝试了几个语法选项,但似乎都不起作用
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
env:
BASE_VERSION: 1.0.0
FULL_VERSION: ${BASE_VERSION}-${{ github.run_number }}-${{ github.ref_name }}
jobs:
Run Code Online (Sandbox Code Playgroud)
这可行吗?
例如,我想要的输出是“1.0.0-1-master”