我的应用程序中有两个项目(层)。一个是myApplication
,另一个是myApplicationLib
。
我有myApplication
层级的所有表格,我正在编写myApplicationLib
层级的业务类。现在我想通过使用带有存储过程的 LINQ 将myApplication
表单中的值插入 SQL Server 。myApplicationLib
如何将 DataContext 上的存储过程从一层调用到另一层?
请帮我。先感谢您
我的应用程序中有两个项目(层)。一个是myApplication
,另一个是myApplicationLib
。
我有myApplication
层级的所有表格,我正在编写myApplicationLib
层级的业务类。现在我想通过使用带有存储过程的 LINQ 将myApplication
表单中的值插入 SQL Server 。myApplicationLib
如何将 DataContext 上的存储过程从一层调用到另一层?
请帮我。先感谢您
为了保持数据访问/业务逻辑的抽象化,myApplicationLib 将包装所有数据访问(包括上下文和 LINQ)并通过方法公开实体/模型/DTO。例如,如果您有一个需要访问并在 Web 表单上显示的产品表,您可以:
创建一个名为 GetCategoryProducts 的方法,该方法返回 myApplicationLib 中的产品列表(您将在此处调用存储过程和/或使用 LINQ)
在 myApplication 中引用 myApplicationLib
调用 myApplicationLib 中的 GetCategoryProducts 方法并在 myApplication 中的 Web 表单上显示(如果需要,您可以在返回的产品列表上使用 LINQ)。
我建议研究用于此的常用设计的存储库模式。
您可以构建这样的方法并将其放入您的 Datalayer 或.. 并从您的业务中调用它。
public bool CallSp(string command, params object[] parameters)
{
int i;
string com = command + " ";
for (i = 0; i < parameters.Count() - 1; i++)
{
com += string.Format("{{0}} ,", i);
}
com += string.Format("{{0}}", i);
//ctx is the datacontext
//EF5
ctx.Database.ExecuteSqlCommand(com, parameters);
return true;
}
CallSp("exec SP", p1, p2, p3,...);
以下是您通常会做的事情: 1. 将 Application Form 中的值分配给 ApplicationLib 对象的所需属性 2. 创建 LINQ 实体 3. 调用 ExecuteMethod
显然,事情可能不像前面提到的那么简单,但它会让你开始。更多信息在这里