使用.NET Entity Framework对第三方应用程序进行数据访问的最佳实践

时间:2013-09-20 14:20:46

标签: asp.net .net sql entity-framework

我正在为现有的第三方应用程序构建自定义。我的代码在同一个.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;
    }

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

1 个答案:

答案 0 :(得分:3)

一些建议:

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