繁体   English   中英

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

[英]Best practice for data access to third-party applications using .NET 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. 如果您直接查询第三方数据库,则在对第三方数据库执行查询时需要非常小心。 如果您开始根据用户输入的内容向这些查询传递字符串,那么您就准备进行SQL注入了。 您要处理的最后一件事是生气的用户,一个供应商告诉您您无法获得支持,因为您以不受支持的方式使用了该产品。
  2. 编写普通的SQL或存储过程没有错。 您不必为每个项目使用实体框架(EF)
  3. 也就是说,EF是一个非常不错的功能集。 如果要用从数据库检索的数据填充类,这是一个不错的选择。 或者,如果您想填充类以发送并在数据库上进行更新而不必编写SQL,则也可以这样做。
  4. 如果您需要挤出性能的一个下降,那么也许自己编写SQL是可行的方法,因此您可以完全控制正在执行的内容,确保执行计划正确,等等。控制,也许尝试一下EF。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM