Entity Framework бросает это исключение:Попытка установить непустой строки к типу «System.Int32»
Свойство «PasswordIterations» на «BranchIdentity» не может быть установлен в «System.String ' стоимость. Вы должны установить это свойство в ненулевое значение типа «System.Int32».
Он бросает на этой линии:
// Validate uniqueness or email and username
var user = sqlStorage.BranchIdentities.FirstOrDefault(i => i.Username.ToLower() == viewModel.Username.ToLower());
Исключение бросает только тогда, когда есть объект, который соответствует запросу. Если совпадений нет, исключение не выбрасывается.
Моя BranchIdentity модель:
namespace Branch.Models.Sql
{
public class BranchIdentity
{
[Key]
public int Id { get; set; }
[Required]
public string Username { get; set; }
[Required]
public string PasswordHash { get; set; }
[Required]
public string PasswordSalt { get; set; }
[Required]
public int PasswordIterations { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string FullName { get; set; }
public virtual ICollection<BranchIdentitySession> BranchIdentitySessions { get; set; }
public virtual BranchRole BranchRole { get; set; }
public virtual GamerIdentity GamerIdentity { get; set; }
}
}
И мой схемы (из базы данных SQL) - генерируется автоматически с помощью кода-первых миграций:
CREATE TABLE [dbo].[BranchIdentities] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Username] NVARCHAR (MAX) NOT NULL,
[PasswordHash] NVARCHAR (MAX) NOT NULL,
[PasswordSalt] NVARCHAR (MAX) NOT NULL,
[PasswordIterations] INT NOT NULL,
[Email] NVARCHAR (MAX) NOT NULL,
[BranchRole_Id] INT NULL,
[GamerIdentity_Id] INT NULL,
[FullName] NVARCHAR (MAX) DEFAULT ('') NOT NULL,
CONSTRAINT [PK_dbo.BranchIdentities] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_dbo.BranchIdentities_dbo.BranchRoles_BranchRole_Id] FOREIGN KEY ([BranchRole_Id]) REFERENCES [dbo].[BranchRoles] ([Id]),
CONSTRAINT [FK_dbo.BranchIdentities_dbo.GamerIdentities_GamerIdentity_Id] FOREIGN KEY ([GamerIdentity_Id]) REFERENCES [dbo].[GamerIdentities] ([Id])
);
Я попытался сделать PasswordIterations
Nullable, но но безрезультатно.
Ваши 'PasswordIterations' определены как' Nullable '. Поэтому, очевидно, вы не можете использовать строку. –
Rahul
Дело в том, что я вообще не использую ничью. Это всегда int. –
Я сомневаюсь, что это та линия, которая бросает исключение. Ты уверен? – Rahul