小编Gil*_*Gat的帖子

如何使用Entity Framework锁定读取表?

我有一个SQL Server(2012),我使用Entity Framework(4.1)访问.在数据库中,我有一个名为URL的表,一个独立的进程在其中提供新的URL.URL表中的条目可以处于"新建","处理中"或"已处理"状态.

我需要从不同的计算机访问URL表,检查状态为"新"的URL条目,取第一个并将其标记为"正在处理".

var newUrl = dbEntity.URLs.FirstOrDefault(url => url.StatusID == (int) URLStatus.New);
if(newUrl != null)
{
    newUrl.StatusID = (int) URLStatus.InProcess;
    dbEntity.SaveChanges();
}
//Process the URL
Run Code Online (Sandbox Code Playgroud)

由于查询和更新不是原子的,我可以读取两个不同的计算机并更新数据库中的相同URL条目.

有没有办法让select-then-update序列原子化以避免这种冲突?

c# sql-server entity-framework multiprocessing

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

Azure队列 - 我可以验证邮件只读一次吗?

我正在使用Azure队列,并从队列中读取几个不同的进程.
我的系统构建方式假定每条消息只读一次.
这篇Microsoft文章声称Azure队列至少有一次传递保证,这可能意味着两个进程可以从队列中读取相同的消息.
StackOverflow线程声称,如果我使用GetMessage,则该消息对于隐身超时的所有其他进程变得不可见.

假设我使用GetMessage()并且在DeleteMessage之前从不超过消息不可见时间,我可以假设我只会获得每条消息一次吗?

azure azure-storage azure-storage-queues

11
推荐指数
2
解决办法
6222
查看次数

是否有一个C#实用程序用于匹配(语法分析)树中的模式?

我正在开发一个自然语言处理(NLP)项目,在该项目中,我使用语法分析器从给定的句子中创建一个语法分析树.

示例输入:我遇到Joe和Jill然后我们去购物
示例输出: [TOP [S [S [NP [PRP I]] [VP [VBD run] [PP [IN into] [NP [NNP Joe] [CC和[NNP Jill]]]]] [CC和] [S [ADVP [RB然后]] [NP [PRP我们]] [VP [VBD去] [NP [NN购物]]]]]] 在此输入图像描述

我正在寻找一个允许我执行复杂查询的C#实用程序:

  • 获得与'Joe'相关的第一个VBD
  • 让NP最接近'购物'

这是一个Java实用程序,我正在寻找一个C#等价物.
任何帮助将非常感激.

c# tree nlp stanford-nlp s-expression

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

如何计算C#中的SQL Server(hashbytes('SHA1',[ColumnName]))的等价物?

在我的数据库中,我有一个计算列,其中包含一个名为URLString的列的SHA1哈希值,该列保存URL(例如"http://xxxx.com/index.html").

我经常需要查询表以根据URLString列查找特定的URL.该表包含100K,这些查询需要几秒钟(使用SQL Azure).由于URL可能很长,我无法在此列上创建索引(大于450字节).

为了加快速度,我想从C#计算SQL Server哈希字节('SHA1',[URLString])的等效值,并根据此值进行查询.

我尝试了下面的代码,但是我获得的值与数据库计算的值不同.

var urlString = Encoding.ASCII.GetBytes(url.URLString); //UTF8 also fails
var sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(urlString);
Run Code Online (Sandbox Code Playgroud)

我在这里错过了一些小事吗?
我对其他可以解决相同问题的想法持开放态度(只要SQL Azure支持它们).

示例:在数据库中,URL http://www.whatismyip.org/的自动计算SHA1值为0xAE66CA69A157186A511ED462153D7CA65F0C1BF7.

c# t-sql sql-server sha

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

我什么时候应该使用LongRunning Task Creation选项?

我有一个Azure Worker角色,它有三种类型的进程:

  • 从数据库读取并写入worker-input-queue的 C#线程(Task1)
  • worker-input-queue读取的Java线程确实可以工作并写入worker-output-queue
  • worker-output-queue读取并写入数据库的C#线程(Task2)

Task1和Task2无限期运行,如果各自的队列为空则休眠.

我的代码看起来像这样:

SpawnJavaProcesses();  
Task.Factory.StartNew(Task1);  
Task.Factory.StartNew(Task2);  
while(true)  
{  
    //do some trivial sporadic work  
    Thread.Sleep(60*1000);  
}  
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 我应该在启动Task1和Task2时使用LongRunning任务创建选项吗?
  • 有没有更好的方法来实现我在这里尝试做的事情?

.net c# azure task-parallel-library

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