mr-*_*taj 2 c# asp.net asp.net-core
我Stored Procedure在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
Run Code Online (Sandbox Code Playgroud)
这是我的视图模型:
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; }
}
Run Code Online (Sandbox Code Playgroud)
现在我需要在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;
}
Run Code Online (Sandbox Code Playgroud)
但这给了我这个错误:
严重性代码说明项目文件行抑制状态错误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();
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作。使用上下文和表示视图模型的模型,您可以像这样从存储过程中提取数据。
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;
Run Code Online (Sandbox Code Playgroud)
不确定是否重要,但是在存储过程中,确定其RoleID,在模型中确定其RoleId。不知道是否有所作为。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |