【发布时间】:2012-10-29 13:51:07
【问题描述】:
实际上,我的代码在 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 避免这种情况,或者旧方法更可靠?
【问题讨论】:
-
你如何实际调用存储过程?您是否尝试过传递 SqlParameter 对象而不是使用字符串?
-
没有这些方法。存储过程被添加到 Edmx 中,并通过模型浏览器配置到存储过程中。生成一个复杂类型并将存储过程插入到函数导入中。然后直接在代码中执行,参数由我从 Web 服务收到的信息提供。
-
为了更清楚,我只是想知道实体框架在构建对存储过程的调用时是否会在将字符串传递给存储过程之前处理字符串准备工作。
-
这是默认传递参数的。只需使用 EDMX 模型的“添加功能导入”来为您的存储过程添加功能。它应该可以工作。
标签: c# .net sql entity-framework entity-framework-4.1