我的应用程序中有两个项目(层)。一个是myApplication
,另一个是myApplicationLib
。
我拥有myApplication
层中的所有表单,我正在myApplicationLib
层编写业务类。现在,我想使用带存储过程的LINQ,通过myApplication
将myApplicationLib
形式的值插入到SQL Server中。
如何将DataContext上的存储过程从一个层调用到另一个层?
请帮帮我。提前谢谢
答案 0 :(得分:1)
为了保持数据访问/业务逻辑的抽象,myApplicationLib将包装所有数据访问(包括上下文和LINQ)并通过方法公开实体/模型/ DTO。例如,如果您有一个产品表,您需要访问并在Web表单上显示,您可以:
创建一个名为GetCategoryProducts的方法,该方法返回myApplicationLib中的产品列表(您可以在此处调用存储过程和/或使用LINQ)
在myApplication中引用myApplicationLib
调用myApplicationLib中的GetCategoryProducts方法并显示在myApplication中的Web表单上(如果需要,您可以在返回的产品列表中使用LINQ。)
我建议查看Repository Pattern这是常用的设计。
答案 1 :(得分:0)
以下是您通常会做的事情: 1.将Application Form中的值分配给ApplicationLib对象的必需属性 2.创建LINQ实体 3.调用ExecuteMethod
显然事情可能没有提到的那么直接,但它会让你开始。 更多信息here
答案 2 :(得分:0)
您可以构建这样的方法并将其放入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,...);