Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用存储过程填充ViewModel_C#_Asp.net_Asp.net Core - Fatal编程技术网

C# 用存储过程填充ViewModel

C# 用存储过程填充ViewModel,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我在Sql Server中创建了这个存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[usp_GetUsrsofRole] (@RoleId int) AS ;WITH CTE_UsersInRole AS ( SELECT U.Id AS [UserId], U.Name AS [UserName] , U.Family AS [UserFamily] , R.I

我在Sql Server中创建了这个
存储过程

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[usp_GetUsrsofRole] (@RoleId int)
AS
;WITH CTE_UsersInRole AS
(
    SELECT 
     U.Id AS [UserId], U.Name AS [UserName] , U.Family AS [UserFamily] , R.Id AS[RoleID],R.Name AS [RoleName]
    FROM AspNetUserRoles AU 
    INNER JOIN AspNetRoles R ON R.Id=AU.RoleId
    INNER JOIN AspNetUsers U ON U.ID=AU.UserId
)
SELECT
     C.RoleID,C.RoleName,C.UserFamily,C.UserId,C.UserName
FROM CTE_UsersInRole C
    WHERE C.RoleID=@RoleId
GO
这是我的视图模型:

public class UserInRoleVM
{
    public string UserName { get; set; }
    public string UserFamily { get; set; }
    public string RoleName { get; set; }
    public int RoleId { get; set; }
    public int UserId { get; set; }

}
现在,我需要在asp Core中用以下代码填充视图模型:

public IEnumerable<UserInRoleVM> GetUserOfRole(int id)
{
    List<UserInRoleVM> users = new List<UserInRoleVM>();
    users = TableAsNoTracking.FromSql("EXEC usp_GetUsrsofRole @p0", id).ToList();
    return users;
}
public IEnumerable GetUserOfRole(int-id)
{
列表用户=新列表();
users=TableAsNoTracking.FromSql(“EXEC usp_GetUsrsofRole@p0”,id).ToList();
返回用户;
}
但它给了我一个错误:

严重性代码说明项目文件行抑制状态 错误CS0029无法隐式转换类型 'System.Collections.Generic.List' 到 “System.Collections.Generic.List”FisziShimi.Services E:\MyProject\Farshid\Backend\FisziShimi\FisziShimi.Services\Services\UserRoleService.cs 26处于活动状态

我怎样才能解决这个问题

更新:

 public DbSet<TEntity> Entities { get; }
 public virtual IQueryable<TEntity> Table => Entities;
 public virtual IQueryable<TEntity> TableAsNoTracking => Entities.AsNoTracking();
公共数据库集实体{get;}
公共虚拟IQueryable表=>实体;
公共虚拟IQueryable表AsNoTracking=>Entities.AsNoTracking();

您可以执行以下操作。使用上下文和表示视图模型的模型,您可以从存储过程中提取,如下所示

List<UserInRoleVM> users = new List<UserInRoleVM>();
using (var context = new DataContext())
{
   SqlParameter Parameter = new SqlParameter("@p0", code);
   users = context.Database.SqlQuery<UserInRoleVM>("exec usp_GetUsrsofRole  @p0", Parameter).ToList();
}
return users;
列表用户=新列表();
使用(var context=new DataContext())
{
SqlParameter参数=新的SqlParameter(“@p0”,代码);
users=context.Database.SqlQuery(“exec usp_GetUsrsofRole@p0”,参数).ToList();
}
返回用户;

不确定它是否重要,但在存储过程中它是RoleID,在模型中它是RoleID。不确定这是否有区别。

@CodeNotFound是