实际上,我有在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避免这种情况或旧的方式更可靠?
答案 0 :(得分:0)
在调用存储过程之前,您不需要做任何事情。 为了帮助您,启动SQL事件探查器以查看发送到数据库的参数是什么。 我运行了一些测试,如果我使用像O'Brian这样的参数,框架会自动将查询中的引用加倍到SQL。