从物化的“System.Guid”类型到“System.String”类型的指定强制转换无效

时间:2016-03-05 05:06:55

标签: c# asp.net asp.net-mvc entity-framework code-first

首先使用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。任何帮助,将不胜感激。

由于

2 个答案:

答案 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();