我创建了以下类:
public class Config
{
public Guid UserId { get; set; }
public string AdminJSON { get; set; }
public string UserJSON { get; set; }
}
当我查询我正在使用的数据时:
Config config = await db.Configs.FindAsync(User.Identity.GetUserId());
这是进行查找的正确方法吗?似乎User.Identity.GetUserId()返回一个 串。我应该将其转换为返回GUID。
我还有另一个问题:
UserId = User.Identity.GetUserId()
这也失败了。我试图通过在User.Identity.GetUserId()之前添加(Guid)来进行强制转换但是这会给出一条消息,说明错误1无法将类型'string'转换为'System.Guid'
它出错,因为它不能
答案 0 :(得分:0)
您需要使用Guid.Parse(User.Identity.GetUserId())
或更好的失败证明方法
Guid userId;
bool worked=Guid.TryParse(User.Identity.GetUserId(),out userId);
if(worked)
{
//go ahead
}
else
{
throw new Exception("Invalid userid");
}
答案 1 :(得分:0)
转换为比第三方库交给你的类型更严格的类型似乎是一个坏主意。仅仅因为这个原因,我会将UserId保持为字符串。如果您发现它成为性能问题,您可以随时对其进行优化。
如果您刚开始使用asp.net Identity,我强烈建议您使用默认项目,因为它已经连线。
以下是我刚开始时帮助我的一些文章: