小编And*_*mar的帖子

C#应用程序意外终止

我们运行一个C#控制台应用程序,启动多个线程来完成工作.主要功能看起来像这样:

try
{
    DoWork();
}
catch (Exception err)
{
    Logging.Log("Exception " + err.ToString());
}
Logging.Log("Finished");
Run Code Online (Sandbox Code Playgroud)

DoWork()函数从数据库中读取新作业,并生成线程以分别处理一个工作项.从上周开始,应用程序开始神秘地消失.它从进程列表中消失,事件日志中没有条目.日志文件显示工作到某一点:它不记录异常,或"完成"行.

有关C#应用程序如何消失的任何线索?

编辑:线程创建如下:

new Thread(SomeObj.StartFunc).Start();
Run Code Online (Sandbox Code Playgroud)

当没有线程运行时,会发生一些消失.

PS我们安装了DebugDiag,其规则是在我们的程序崩溃时创建崩溃转储.当进程消失时,它没有创建任何转储文件.

.net c#

11
推荐指数
3
解决办法
5813
查看次数

EF Code First:使用非标识主键向表中添加行

为了将此问题简化为简单版本,我创建了此表:

create table TestTable(id int primary key, descr varchar(50))
Run Code Online (Sandbox Code Playgroud)

请注意,该id字段不是标识字段.现在,如果我尝试使用EF Code First插入一行:

[Table("TestTable")]
public class TestTable
{
    [Key]
    public int id { get; set; }
    public string descr { get; set; }
}

public class TestContext : DbContext
{
    public TestContext(string connectionString) : base(connectionString) {}
    public DbSet<TestTable> TestTables { get; set; }
}

static void Main()
{
    const string connectionString = "...";
    using (var db = new TestContext(connectionString))
    {
        db.TestTables.Add(new TestTable { id = 42, descr = "hallo" …
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework ef-code-first

11
推荐指数
1
解决办法
2677
查看次数

SELECT查询何时开始返回行?

假设以下查询:

SELECT * FROM table;
Run Code Online (Sandbox Code Playgroud)

DBMS会在获取第一行后立即给我第一行,还是首先获取所有行(将它们保存在某种缓冲区中)然后立即给我所有行?

如果我的问题不明确.假设其中的行数table使得DBMS将花费60分钟来获取所有行.DBMS会在60分钟内逐步返回行,还是在收到任何数据之前需要等待60分钟?

sql postgresql select

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

无法使用默认命名空间编写XML文件

我正在编写一个Python脚本来更新Visual Studio项目文件.它们看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" 
      xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
      ...
Run Code Online (Sandbox Code Playgroud)

以下代码读取然后写入文件:

import xml.etree.ElementTree as ET

tree = ET.parse(projectFile)
root = tree.getroot()
tree.write(projectFile,
           xml_declaration = True,
           encoding = 'utf-8',
           method = 'xml',
           default_namespace = "http://schemas.microsoft.com/developer/msbuild/2003")
Run Code Online (Sandbox Code Playgroud)

Python在最后一行抛出错误,说:

ValueError: cannot use non-qualified names with default_namespace option
Run Code Online (Sandbox Code Playgroud)

这是令人惊讶的,因为我只是在阅读和写作,中间没有编辑.Visual Studio拒绝加载没有默认命名空间的XML文件,因此省略它不是可选的.

为什么会出现此错误?建议或替代方案欢迎.

python xml elementtree

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

第一次学习Oracle

我是一位非常有经验的MS Sql开发人员,我将在几天内与Oracle合作开展一些新的职位.

与我学到的所有技术一样,我想知道最好的地方和书籍,以及使用Oracle设计和开发的速度,并使用纯C#.

有什么资源让我们微软的员工可以加入Oracle并与之合作?我意识到有oracle.com和asktom.oracle.com,以及关于Oracle的大量文档,我正在寻找一个快速入门(设置服务器,获取一些样本数据等). .)而不是深入sql与oracle技术的比较.

提前致谢.

.net c# sql-server oracle

8
推荐指数
2
解决办法
873
查看次数

将C#类序列化为XML文本的更简单方法

在尝试回答另一个问题时,我将C#对象序列化为XML字符串.这真是令人惊讶的困难; 这是我能提出的最短的代码片段:

var yourList = new List<int>() { 1, 2, 3 };
var ms = new MemoryStream();
var xtw = new XmlTextWriter(ms, Encoding.UTF8);
var xs = new XmlSerializer(yourList.GetType());
xs.Serialize(xtw, yourList);
var encoding = new UTF8Encoding();
string xmlEncodedList = encoding.GetString(ms.GetBuffer());
Run Code Online (Sandbox Code Playgroud)

结果还可以:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfInt
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <int>1</int>
    <int>2</int>
    <int>3</int>
</ArrayOfInt>
Run Code Online (Sandbox Code Playgroud)

但是片段比我想象的要复杂得多.我无法相信你必须知道编码和MemoryStream这个简单的任务.

是否有更短的方法将对象序列化为XML字符串?

c# xml xml-serialization

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

键盘快捷键以关闭"查找和替换"对话框

在Visual Studio中,我键入 CTRL-F以打开"查找和替换"对话框.我可以用F3或搜索ENTER.这让我进入下一个热门,重点是找到文本的窗口.

但是,"查找和替换"对话框仍然存在.如果我按下ESCAPE窗口失去焦点,但它不会消失.我最终不得不将鼠标移动到右上方的小X上,每天100次.

是否有键盘快捷键来关闭"查找和替换"对话框?

.net c# keyboard-shortcuts visual-studio-2010

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

向表中添加BLOB字段的性能开销

我试图在两种可能的实现之间做出决定,我渴望选择最好的一种:)

我需要向表中添加一个可选的BLOB字段,该表当前只有3个简单字段.据预测,新字段的使用率将低于10%,甚至可能低于5%,因此对于大多数行来说它将为空 - 事实上,我们的大多数客户可能永远不会有任何BLOB数据.

同事的第一个倾向是添加一个新表来保存BLOB,在第一个表中有一个(可为空的)外键.他预测在查询第一个表时会有性能优势.

我的想法是,将BLOB直接存储在原始表中更合乎逻辑,也更容易.我们的查询都没有SELECT *从该表中进行,因此我的直觉是直接存储它不会产生显着的性能开销.

我将对两种选择进行基准测试,但我希望一些SQL专家可以从经验中获得任何建议.

使用MSSQL和Oracle.

sql-server oracle performance blob

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

使用子选择的MySQL查询选择花费的时间太长

从2个表执行select时我发现了一些奇怪的东西:

SELECT * FROM table_1 WHERE id IN (
    SELECT id_element FROM table_2 WHERE column_2=3103);
Run Code Online (Sandbox Code Playgroud)

此查询大约需要242秒.

但是当我执行子查询时

SELECT id_element FROM table_2 WHERE column_2=3103
Run Code Online (Sandbox Code Playgroud)

它花了不到0.002s(并产生了2行).
然后,当我做的时候

SELECT * FROM table_1 WHERE id IN (/* prev.result */)
Run Code Online (Sandbox Code Playgroud)

它是相同的:0.002s.

我想知道MySQL为什么会这样做第一个查询,比最后两个查询分别花费更多的时间?它是根据子查询结果选择内容的最佳解决方案吗?

其他细节:table_1约有.9000行,并table_2有90000行.

在我添加索引column_2table_2,第一个查询花了0.15秒.

mysql optimization select

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

理解GROUP BY语句的行为

问题是这个......

表是这个..

+--------------------------+---------+------+-----+---------+----------------+
| Field                    | Type    | Null | Key | Default | Extra          |
+--------------------------+---------+------+-----+---------+----------------+
| facility_map_id          | int(10) | NO   | PRI | NULL    | auto_increment |
| facility_map_facility_id | int(10) | NO   | MUL | NULL    |                |
| facility_map_listing_id  | int(10) | NO   |     | NULL    |                |
+--------------------------+---------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

这是数据..

+-----------------+--------------------------+-------------------------+
| facility_map_id | facility_map_facility_id | facility_map_listing_id |
+-----------------+--------------------------+-------------------------+
|             248 |                        1 |                      18 |
|             259 |                        1 |                      19 |
|             206 …
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by having-clause

7
推荐指数
2
解决办法
997
查看次数