Я хочу контролировать, что назначено первичному ключу или столбцу Id пользователя Identity. По сути, пользователи моей системы также являются пользователями другой системы (требование), и я хочу использовать идентификатор пользователя из другой системы при создании учетной записи этого пользователя в моей системе. Если они будут одинаковыми, это упростит многие вещи, в отличие от необходимости поддерживать как идентификатор пользователя из другой системы, так и отличающийся от моего.
Пока что я изменил тип Id со строки на long, чтобы соответствовать. Однако, когда я создаю пользователя, создание нового пользователя завершается неудачно, потому что Id равен нулю. То есть IdentityUser ожидает, что столбец Id будет Identity, поэтому он автоматически заполняется базой данных при вставке. По сути, он игнорирует значение, которое я установил для Id перед вызовом Create (пользователь, пароль). Я попытался переопределить свойство Id как
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Computed)]
public override long Id
{
get { return base.Id; }
set { base.Id = value; }
}
но получите следующее исключение:
[NotSupportedException: Modifications to tables where a primary key column has property 'StoreGeneratedPattern' set to 'Computed' are not supported. Use 'Identity' pattern instead. Key column: 'Id'. Table: 'CodeFirstDatabaseSchema.ApplicationUser'.]
System.Data.Entity.Core.Mapping.Update.Internal.UpdateCompiler.BuildSetClauses(DbExpressionBinding target, PropagatorResult row, PropagatorResult originalRow, TableChangeProcessor processor, Boolean insertMode, Dictionary`2& outputIdentifiers, DbExpression& returning, Boolean& rowMustBeTouched) +2292
System.Data.Entity.Core.Mapping.Update.Internal.UpdateCompiler.BuildInsertCommand(PropagatorResult newRow, TableChangeProcessor processor) +204
System.Data.Entity.Core.Mapping.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode, UpdateCompiler compiler) +412
Который в основном говорит, что Id должен быть столбцом Identity.
Так что на данный момент я в растерянности, что попробовать дальше. Это вообще возможно?