我有一个存储过程,它返回一个用户列表(用户表中的行)。
var admins = db.aspnet_UsersInRoles_GetUsersInRoles('/', "Admin");
LINQ为我生成了aspnet_User类,所以我能以某种方式将结果映射到aspnet_User类型的列表吗?类似的东西:
List<aspnet_User> admins = db.aspnet_UsersInRoles_GetUsersInRoles('/', "Admin");
答案 0 :(得分:2)
你完全有可能只需要:
List<aspnet_User> admins = db.aspnet_UsersInRoles_GetUsersInRoles('/', "Admin")
.ToList();
但是很难知道方法调用返回的类型。
答案 1 :(得分:2)
也许这应该是一个评论,但它太长了......
好吧,你真的不希望内部课程<aspnet_User>
你想要一个MembershipUser
。
那么如何不使用成员资格提供程序附带的存储过程,而是真正使用成员资格提供程序呢。
有一个漂亮的类:System.Web.Security中的角色
它给你这个:
public static string[] GetUsersInRole(string roleName)
从这里开始,在列表中获取MembershipUser的foreach并不复杂。
答案 2 :(得分:1)
默认情况下,存储过程将返回一个类型,该类型根据输出列确定,并在结尾处添加了Result。它不会将它与您已确定的类型相关联。要更改此设置,您可以将属性窗口中的“返回类型”更改为已在模型中定义的类型,或者将存储过程拖动到模型中时,将其直接放在希望存储过程为的类型上映射到。
但是,您没有机会更改存储过程的列映射,因此请确保存储过程生成的形状与目标对象结构相同。
答案 3 :(得分:0)
这是一篇旧帖子,今天我正在研究它,我也遇到了同样的问题,
我认为你要申请asp会员资格?
您无法将此存储过程转换为aspnet_User,因为它会返回aspnet_UsersInRoles_GetUsersInRolesResult类型。
但是从这个aspnet_UsersInRoles_GetUsersInRolesResult你可以得到userName,然后请求aspnet_User表:
String app = "your application name";
String role = "your role name";
ArrayList userInRoleList = new ArrayList();
//Get the role ID
ASPNETDBDataContext aspDB = new ASPNETDBDataContext();
var userInRole = aspDB.aspnet_UsersInRoles_GetUsersInRoles(app, role);
foreach (aspnet_UsersInRoles_GetUsersInRolesResult users in userInRole)
{
userInRoleList.Add(users.UserName);
}