0

我正在为现有的第三方应用程序构建自定义项。我的代码在同一个 .NET 应用程序池中运行,并且与第三方应用程序在同一台服务器上。

我无权访问他们的数据模型,也没有 api。我一直在编写 SQL 查询并为我的自定义开发 WCF 服务。这行得通,但感觉很“恶心”。下面是一个例子:

public DLPDetail GetEventDetail(int id)
    {
        DLPDetail detail = new DLPDetail();

        SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["DLP"].ToString());
        con.Open();

        SqlCommand command = new SqlCommand("SELECT compound_path, FILE_MATCH_ID FROM E_ABSTRACT_FILE_MATCH WHERE EVENT_ID = '" + id + "'", con);
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            detail.Name = reader.GetString(0);
            detail.FileMatchId = reader.GetInt64(1).ToString();
        }

        return detail;
    }

我想知道是否有更好的方法可以使用实体框架或类似的东西。有什么想法吗?

4

1 回答 1

3

一些建议:

  1. 如果您直接查询第三方数据库,则在对它执行查询时需要 非常小心。如果您开始将基于用户输入的字符串传递到这些查询中,那么您就是在为 SQL 注入打开自己的大门。您要处理的最后一件事是愤怒的用户和供应商告诉您无法获得支持,因为您以不受支持的方式使用了产品。
  2. 编写普通的 SQL 或存储过程没有任何问题。您不必为每个项目都使用实体框架 (EF )
  3. 也就是说,EF 是一个非常好的功能集。如果您希望使用从数据库中检索到的数据填充类,那么这是一个不错的选择。或者,如果您想填充类以发送并在数据库上更新而无需编写 SQL,您也可以这样做。
  4. 如果您需要挤出最后一滴性能,那么也许自己编写 SQL 是一种方法,这样您就可以完全控制正在执行的内容,确保执行计划是正确的,等等。如果您不需要那种级别的控制,也许给EF一试。
于 2013-09-20T14:32:08.443 回答