Stored procedures 使用EF6从具有条件选择的存储过程捕获结果
我正在使用一个存储过程来调用Stored procedures 使用EF6从具有条件选择的存储过程捕获结果,stored-procedures,entity-framework-6,Stored Procedures,Entity Framework 6,我正在使用一个存储过程来调用EF6,其结果取决于满足的条件。如何在EF6中捕获这些结果 样本程序: 结果在任何情况下都是完全不同的,请在实体框架中指导捕获此类结果集!谢谢。这在很大程度上取决于您的型号。假设您有一个类别模型,并相应地映射了字段名,这样做将是一个开始: public Category GetCategoryById(int categoryId) { Category category; using (var context = new NorthwindData
EF6
,其结果取决于满足的条件。如何在EF6中捕获这些结果
样本程序:
结果在任何情况下都是完全不同的,请在
实体框架
中指导捕获此类结果集!谢谢。这在很大程度上取决于您的型号。假设您有一个类别模型,并相应地映射了字段名,这样做将是一个开始:
public Category GetCategoryById(int categoryId)
{
Category category;
using (var context = new NorthwindData())
{
SqlParameter categoryParam = new SqlParameter("@a", categoryId);
category = context.Database.SqlQuery<Category>("udsp_get_category @a", categoryParam).FirstOrDefault();
}
return category;
}
public Category GetCategoryById(int categoryId)
{
类别;
使用(var context=new NorthwindData())
{
SqlParameter categoryParam=新的SqlParameter(“@a”,categoryId);
category=context.Database.SqlQuery(“udsp_get_category@a”,categoryParam).FirstOrDefault();
}
退货类别;
}
关于EF和存储过程的文章很多 只有在所有查询都具有相同形状的情况下,这才适用于EF。例如:
create procedure udsp_get_category
(
@a int =0
)
as
if @a = 1
Begin
select top 1 pk_cat_id as [Id],
cat_name as [Name],
cat_is_active as [Active],
1 as [IsMaster]
from category_master
End
Else if @a = 0
Begin
select top 1 pk_cattp_id as [Id],
cattp_name as [Name],
cattp_is_active as [Active]
0 as [IsMaster]
from category_type_master
End
Else
Begin
select -1 as [Id],
null as [Name],
null as [Active]
-1 as [IsMaster]
End
现在,您可以在具有Id
、Name
、Active
和IsMaster
作为属性的类中捕获结果
create procedure udsp_get_category
(
@a int =0
)
as
if @a = 1
Begin
select top 1 pk_cat_id as [Id],
cat_name as [Name],
cat_is_active as [Active],
1 as [IsMaster]
from category_master
End
Else if @a = 0
Begin
select top 1 pk_cattp_id as [Id],
cattp_name as [Name],
cattp_is_active as [Active]
0 as [IsMaster]
from category_type_master
End
Else
Begin
select -1 as [Id],
null as [Name],
null as [Active]
-1 as [IsMaster]
End