小编NVR*_*RAM的帖子

如何在不加载内容的情况下COUNT在EntityFramework中的行?

我正在尝试确定如何使用EntityFramework 计算表上的匹配行.

问题是每行可能有许多兆字节的数据(在二进制字段中).当然SQL会是这样的:

SELECT COUNT(*) FROM [MyTable] WHERE [fkID] = '1';
Run Code Online (Sandbox Code Playgroud)

我可以加载所有行,然后找到Count:

var owner = context.MyContainer.Where(t => t.ID == '1');
owner.MyTable.Load();
var count = owner.MyTable.Count();
Run Code Online (Sandbox Code Playgroud)

但这非常低效.有更简单的方法吗?


编辑:谢谢,所有.我已将数据库从私有附件移动,因此我可以运行分析; 这有助于但却引起我没想到的混乱.

而我的真实数据是深一点,我会用卡车运送托盘案件资料 -我不想让卡车离开除非有至少一个项目在里面.

我的尝试如下所示.我没有得到的部分是CASE_2永远不会访问数据库服务器(MSSQL).

var truck = context.Truck.FirstOrDefault(t => (t.ID == truckID));
if (truck == null)
    return "Invalid Truck ID: " + truckID;
var dlist = from t in ve.Truck
    where t.ID == truckID
    select t.Driver;
if (dlist.Count() == …
Run Code Online (Sandbox Code Playgroud)

c# database entity-framework

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

Windows服务如何确定其ServiceName?

我看了,找不到一个简单的问题:

Windows服务如何确定启动它的ServiceName?

我知道安装可以破解注册表并添加一个命令行参数,但逻辑上看起来它应该是不必要的,因此这个问题.

我希望比注册表黑客更干净地运行单个二进制文件的多个副本.

编辑:

这是用C#编写的.我的应用程序Main()入口点执行不同的操作,具体取决于命令行参数:

  • 安装或卸载服务.命令行可以提供非默认的ServiceName,并且可以更改工作线程的数量.
  • 作为命令行可执行文件运行(用于调试),
  • 作为"Windows服务"运行.在这里,它创建了一个ServiceBase派生类的实例,然后调用System.ServiceProcess.ServiceBase.Run(instance);

目前,安装步骤将服务名称和线程计数附加到注册表中的ImagePath,以便应用程序可以确定它的ServiceName.

c# service windows-services

34
推荐指数
3
解决办法
3万
查看次数

是否可以为.NET应用程序或仅为线程设置CultureInfo?

我有一个用C#编写的应用程序,它没有GUI或UI,而是编写由另一个应用程序解析的文件(在XML和其他应用程序中).

我有一个客户,其CultureInfo将NumberDecimalSeparator设置为逗号,导致浮点数解析错误(PI最终为3,1415).

我想要一种在应用程序中为所有线程全局设置CultureInfo的方法.我试过了:

  1. (显然)习惯性的方法是将CurrentThread.CurrentCulture设置为Main()中的第一行,但它似乎被重置.
  2. http://www.codeproject.com/KB/cs/Change_App_Culture.aspx上的变体/扩展
  3. 对应用程序中显式创建的线程执行相同的操作(#1).

更改为使用显式格式不是一种选择(150K +行,大多数由前雇员编写).

[编辑] 应用程序绑定到套接字并处理来自专用客户端的请求.根据请求类型,它会生成不同的处理程序类.

对不起,当我第一次发布时,我应该在#1中澄清(我虽然)我已经在所有明确生成的处理程序中完成了这一点.

事实证明我错过了导致问题的线程/处理程序. 所以应用程序现在正常工作,但问题仍然是关于是否可以在所有线程上设置文化.

如果它可以迭代所有线程,它也会解决问题.所以:

如何在当前进程中获取所有Thread对象(而不是ProcessThread)?

c# culture cultureinfo number-formatting

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

是否可以可靠地将用户文件自动解码为Unicode?[C#]

我有一个Web应用程序,允许用户上传他们的内容进行处理.处理引擎需要UTF8(我正在从多个用户的文件中编写XML),所以我需要确保能够正确解码上传的文件.

因为如果我的任何用户知道他们的文件甚至编码我会感到惊讶,我很少希望他们能够正确指定要使用的编码(解码器).因此,我的应用程序在解码前留下了检测任务.

这似乎是一个普遍的问题,我很惊讶没有找到解决方案的框架功能或一般配方.是不是我没有搜索有意义的搜索词?

我已经实现了BOM感知检测(http://en.wikipedia.org/wiki/Byte_order_mark),但我不确定文件上传的频率是多少,无需BOM表示编码,这对于大多数非UTF文件.

我的问题归结为:

  1. BOM识别检测对于绝大多数文件是否足够?
  2. 在BOM检测失败的情况下,是否可以尝试不同的解码器并确定它们是否"有效"?(我的尝试表明答案是"不".)
  3. 在什么情况下,"有效"文件会因C#编码器/解码器框架而失败?
  4. 是否有一个存储库,其中包含大量具有各种编码的文件用于测试?
  5. 虽然我特别询问C#/ .NET,但我想知道Java,Python和其他语言的答案,以便下次我必须这样做.

到目前为止,我发现:

  • 带有Ctrl-S字符的"有效"UTF-16文件导致编码为UTF-8抛出异常(非法字符?) (这是一个XML编码异常.)
  • 使用UTF-8解码有效的UTF-16文件会成功,但会为文本提供空字符.咦?
  • 目前,我只期望UTF-8,UTF-16和可能的ISO-8859-1文件,但我希望该解决方案尽可能可扩展.
  • 我现有的一组输入文件不够宽泛,无法发现实时文件会出现的所有问题.
  • 虽然我试图解码的文件是"文本",但我认为它们通常是用文件中的垃圾字符创建的方法.因此"有效"文件可能不是"纯粹的".哦,快乐.

谢谢.

c# string multilingual utf-8 utf-16

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

与Windows服务相同的应用程序的多个实例?

我有一个应用程序来管理我的项目的繁重处理,并需要将其转换为"Windows服务".我需要允许运行应用程序处理的多个版本实例,这似乎是一个相当正常的要求.

我可以看到至少三种方法来做到这一点:

  1. 创建一个已安装的目录(EXE,DLL,config),但要从中安装多个Services实例.
  2. 有一个单一的服务实例启动,一拉阿帕奇产卵后自身的多个实例.
  3. 让一个Services实例生成多个在同一进程空间内工作的线程.

我的意图是方法#1,但我一直在设计和特别是服务文档的限制上绊倒:

  • 参数是否通过无人值守系统上的常规服务机制传递给OnStart()?如果是的话,何时/为何?
  • 通过ImageKey注册表传递运行时参数似乎是一个问题,是否有更好的机制?
  • 我得到应用程序安装/卸载自己作为一对服务("XYZ#1","XYZ#2",...),使用ImageKey交给命令行参数实例编号(" - x 1") ," - x 2")但我遗失了一些东西.尝试启动该服务时,它将失败," 此服务配置为运行的可执行程序未实现该服务.

所以,问题:

  1. 是否有关于服务启动时会发生什么的简明描述,特别是对于ServiceName未进行硬编码的情况(参见上面的Q).
  2. 有没有人成功使用方法#1?任何意见?

注意:我通过使用方法#3来解决这个问题,所以我无法证明这一点.但我认为有人可能有关于如何实施#1的信息 - 或者很好的理由为什么它不是一个好主意.

[编辑]我最初有一个第四个选项(在硬盘上安装应用程序的多个副本),但我删除它,因为它只是感觉,嗯,hackish.这就是我说" 至少有三种方法 "的原因.

但是,除非重新编译应用程序,否则它必须动态设置其ServiceName,因此它具有上述第三个项目符号/问题的解决方案.因此,除非需要更改其安装文件的实例,否则#1应该可以正常使用目录中的N个配置文件和指示实例应该使用的注册表项.

c# windows-services

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

如何在NetBeans中禁用"HTML检查"?

我正在使用NetBean的Compile on Save设置,当我编辑单个文件时它非常方便.但是,当我处理一对(或更多)类文件并在文件之间切换时,我遇到了一个问题:

" 任务"选项卡几乎一文不值,因为项目中由许多外部工具生成的许多HTML文件中的HTML"错误"消息(+)散落在其中.HTML错误的数量淹没了任何实际的Java错误.

我想要的是以下之一:

  1. 一种告诉NB忽略HTML文件目录("帮助")的方法.
  2. 一种关闭HTML"错误"甚至指定HTML2的方法.
  3. 一种按文件类型,父文件夹过滤"任务"错误的方法:所有Java都在"com"下.

我仔细研究了设置和属性,但没有发现任何有用的东西.

<rant>我讨厌使用"Take thething in the Folder"方法的IDE的另一个原因...... </ rant>

+ =文件是有效的HTML,但可能不是XHTML.此外,一半的消息突然结束,例如:Unexpected tag <TD> found, expecting one of

html netbeans syntax-checking

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

多线程BASH编程 - 通用方法?

好吧,我在所有演示中都运行了POV-Ray,但是POV仍然是单线程的,并且不会使用多个核心.所以,我开始考虑BASH的解决方案.

我写了一个通用函数,它接受一个命令列表并在指定数量的子shell中运行它们.这实际上有效,但我不喜欢它以线程安全的 多进程方式处理下一个命令的方式:

  • 作为参数,它需要一个带命令的文件(每行1个),
  • 要获得"下一个"命令,每个进程("线程")将:
    • 等到它可以创建一个锁文件,使用:ln $ CMDFILE $ LOCKFILE
    • 从文件中读取命令,
    • 删除第一行修改$ CMDFILE,
    • 删除$ LOCKFILE.

有更清洁的方法吗? 我无法让子shell正确读取FIFO中的单行.


顺便提一下,这一点是为了增强我在BASH命令行上可以做的事情,而不是找到非bash解决方案.我倾向于从命令行执行许多复杂的任务,并希望工具箱中有另一个工具.

同时,这是处理从文件中获取下一行的函数.如您所见,它每次读取/删除一行时都会修改磁盘文件.这似乎是hackish,但我没有想出更好的东西,因为FIFO没有用bash中的setvbuf()工作.

#
# Get/remove the first line from FILE, using LOCK as a semaphore (with
# short sleep for collisions).  Returns the text on standard output,
# returns zero on success, non-zero when file is empty.
#
parallel__nextLine() 
{
  local line rest file=$1 lock=$2

  # Wait for lock...
  until ln "${file}" "${lock}" 2>/dev/null …
Run Code Online (Sandbox Code Playgroud)

bash shell multithreading mutex semaphore

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