在Entity Framework中调用存储过程时的字符串准备

时间:2012-10-29 13:51:08

标签: c# .net sql entity-framework entity-framework-4.1

实际上,我有在Visual Studio 2010中使用Entity Framework 4.1的代码。除了一件事之外,一切都工作得很好:它似乎并没有“准备”像习惯性的好[parameters.Add]这样的参数。

这是我的代码:

using (MyEnterprisesEntities dataContext = new 
                             MyEnterprisesEntities(entityBuilder.ToString()))
{
         dataContext.CompanyInitializer(connection.Catalog,
                                        args.CompanyId,
                                        args.CompanyName);
}

所以,如果我的公司名称是O'Brian and sons(实际上它之前通过WCF Web服务传递,所以它更多地采用这种形式:O\'Brian and sons),它似乎打破了我的存储过程(包括可能性)允许SQL注入。)

有没有办法通过EDMX避免这种情况或旧的方式更可靠?

1 个答案:

答案 0 :(得分:0)

在调用存储过程之前,您不需要做任何事情。 为了帮助您,启动SQL事件探查器以查看发送到数据库的参数是什么。 我运行了一些测试,如果我使用像O'Brian这样的参数,框架会自动将查询中的引用加倍到SQL。