首先使用MVC EF代码,新项目可以带有帐户功能(登录,注册等)。我将数据库连接字符串从指向 App_Data 文件夹中的mdf文件更改为使连接字符串指向 SQL Server实例。 ASP.NET 特定表是在 SQL Server实例中创建的。
现在,当以下自动生成代码行运行时:
var result = await SignInManager.PasswordSignInAsync(model.Email,
model.Password, model.RememberMe, shouldLockout: false);
它抛出异常:
从物化“System.Guid”类型到“System.String”类型的指定强制转换无效。
数据库字段和域模型是Guids。任何帮助,将不胜感激。
由于
答案 0 :(得分:2)
在我的情况下,我的实体使用Guid作为ID,但在数据库中ID是nvarchar(300),我通过将 nvarchar(300)更改为 uniqueidentifier ,但是如果不知道这可能会对您的数据库/应用程序产生什么影响,请不要这样做,在我的情况下,它很简单,并且工作正常。
我希望如果其他人遇到同样的问题,这会有所帮助。
答案 1 :(得分:1)
我通过在查询条件的两端使用ToString()
函数解决了这个问题。
初始问题:
Guid userId = Guid.Parse(User.Identity.GetUserId());
candidateDashBoard.DismissalRecord = db.DismissalRecords.Where(c =>
c.CandidateId == userId).FirstOrDefault();
解决方案:
Guid userId = Guid.Parse(User.Identity.GetUserId());
candidateDashBoard.DismissalRecord = db.DismissalRecords.Where(c =>
c.CandidateId.ToString() == userId.ToString()).FirstOrDefault();