与Ef Framework一起使用SqlDependencies时出现StackoverflowException

时间:2012-03-28 08:13:24

标签: entity-framework stack-overflow sqldependency

我想获得一些关于在EF Framework 4.0中使用SqlDependencies的反馈。我目前使用ObjectQuery和toStraceString()实现了一个场景来生成SqlDependency。 我在刷新存储获胜时在Entity Framework源代码中的某处获得了StackoverflowException。我认为这个错误会在我的代码中的某处,但我找不到它。 我编写了一个我想做的小例子:

public partial class MainWindow : Window
{

    private SqlDependency _sqldep;

    public delegate void DataChanged(string test);
    TestEntities m = new TestEntities();

    SqlCommand _cmd;

    public MainWindow()
    {
        InitializeComponent();

        this.DataContext = this;
        //m.Connection.Open();


        SqlDependency.Start(((System.Data.EntityClient.EntityConnection)m.Connection).StoreConnection.ConnectionString);

        var query = m.User.AsQueryable<User>();

        string query_str = m.User.ToTraceString();
        SqlConnection con = new SqlConnection(((System.Data.EntityClient.EntityConnection)m.Connection).StoreConnection.ConnectionString);

        con.Open();

        SqlCommand cmd = new SqlCommand(query_str, con);

        _cmd = cmd;

        _sqldep = new SqlDependency(cmd);
        _sqldep.OnChange += dependency_OnChange;
        cmd.ExecuteReader();

        this.Users = m.User;
    }

    SqlDependency dependency; 
    // Bei Änderung am gegebenen SQL-Statement
    private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
    {
        dependency = (SqlDependency)sender;
        dependency.OnChange -= dependency_OnChange;
        NotifierOnDataChanged(string.Empty);
        dependency.OnChange += dependency_OnChange;
    }

    private void NotifierOnDataChanged(string bla)
    {
        try
        {
            m.Refresh(System.Data.Objects.RefreshMode.StoreWins, m.User);
        }
        catch (System.Exception ex)
        {
            System.Windows.MessageBox.Show(ex.Message, "Fehler");

        }
    }


    private IEnumerable<User> _users;

    public IEnumerable<User> Users
    {
        get { return _users; }
        set { _users = value; }
    }

}

我在NotifierOnDataChanged获取了StackoverflowException - &gt;刷新

0 个答案:

没有答案