在Entity Framework和SQL Server之间拦截和操作SQL消息

时间:2016-07-27 14:35:34

标签: c# sql-server entity-framework

我对不同的数据层有所了解。我想在不同的sql服务器之间进行负载平衡。为此,我有以下设置:

enter image description here

当webapplication执行SQL请求时,“Application Proxy”会检查它是否是SELECT语句。当它是SELECT语句时,“Application Proxy”将SELECT语句发送到1个服务器。如果它不是SELECT语句,它会将请求发送到所有服务器。

现在我知道这种状态下的想法是行不通的,我必须解决很多不同的问题才能让它发挥作用(是的,已有解决方案)。但就目前而言,最大的启动问题是与实体框架的整合。

我想要的是将DbContext包装在我自己的类中,这样我就可以截取消息并自己发送。所以像这样:

public class MyDbContext : DbContext
{
    public override string DoCallToServer(string sqlrequest)
    {
        if (sqlrequest.ToLower().StartsWith("select"))
        {
            return MyEngine.CallAll(sqlrequest);
        }
        else
        {
            return MyEngine.CallOne(sqlrequest);
        }
    }
}

这可能吗?

我搜索了互联网,但找不到任何东西。

1 个答案:

答案 0 :(得分:0)