C# 具有实体框架6的ServiceBroker

C# 具有实体框架6的ServiceBroker,c#,entity-framework,service,service-broker,C#,Entity Framework,Service,Service Broker,我有一个Windows服务,它使用service Broker队列获取需要某些处理的通知: var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["MathsEngine.Properties.Settings.TargetConnectionString"].ToString()); var cmd = new SqlCommand("WAITFOR ( RECEIVE * FROM dbo.MathsEngin

我有一个Windows服务,它使用service Broker队列获取需要某些处理的通知:

var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["MathsEngine.Properties.Settings.TargetConnectionString"].ToString());

var cmd = new SqlCommand("WAITFOR ( RECEIVE * FROM dbo.MathsEngineQueue);", cnn) {CommandTimeout = 0};

cnn.Open();

// Execute the command - we will wait here until a new entry appears in the Notification Queue
//
SqlDataReader reader = cmd.ExecuteReader();

// Get the message text from the reader
//
while (reader.Read())
{
    // Get the message body text and convert into a legible format
    //
    _messageText = Encoding.Unicode.GetString(reader.GetSqlBinary(reader.GetOrdinal("message_body")).Value);
}

reader.Close();
reader.Dispose();
cmd.Dispose();
我现在开始使用EntityFramework6.0来完成我所有的数据库交互。我一直在试图找到一种方法来监控队列,并通过EF获取任何消息。到目前为止,我发现的唯一部分答案涉及非常复杂的SQLDependency使用,它仍然不允许我从队列中获取消息


在EF中真的有这样做的方法吗?或者我现在是不是一直保持这一区域不变?

经过大量的搜索,看起来我还是坚持使用旧的方法。这并没有什么大不了的,因为实体框架的目的是让普通的查询变得更容易,也更符合逻辑

我将把此功能视为特殊情况,并将其分开。

同意。我也花了相当多的时间来解决这个问题,得出的结论是ServiceBroker(SB)在这个阶段无法与EntityFramework6(我的是6.1.1)相处。我创建的所有单元测试(实际上是使用LocalDB)都是成功的,使用EF而不使用SB,但是,一旦它们与SB集成,它们就不起作用了


为了进一步说明,SELECT语句可以工作,但INSERT、UPDATE和DELETE不会改变任何内容。

我已经将EFAutoRefresh库(最初是从)移植到EF 6。它在某些数据集上正常工作,而其他数据集无法更新。玩一玩,任何反馈都会很好