Когда я создаю файл миграции в Azure .Net Backend, он автоматически создает пять обязательных полей (Id, CreatedAt, UpdatedAt, Version, Deleted) с моими пользовательскими полями. Он определяет идентификатор как первичный ключ.
public override void Up()
{
CreateTable(
"dbo.People",
c => new
{
Id = c.String(nullable: false, maxLength: 128,
annotations: new Dictionary<string, AnnotationValues>
{
{
"ServiceTableColumn",
new AnnotationValues(oldValue: null, newValue: "Id")
},
}),
PersonType = c.String(nullable: false, maxLength: 2),
FirstName = c.String(nullable: false, maxLength: 50),
MiddleName = c.String(maxLength: 50),
LastName = c.String(nullable: false, maxLength: 50),
Gender = c.String(nullable: false, maxLength: 1),
BirthDate = c.DateTime(nullable: false, storeType: "date"),
Version = c.Binary(nullable: false, fixedLength: true, timestamp: true, storeType: "rowversion",
annotations: new Dictionary<string, AnnotationValues>
{
{
"ServiceTableColumn",
new AnnotationValues(oldValue: null, newValue: "Version")
},
}),
CreatedAt = c.DateTimeOffset(nullable: false, precision: 7,
annotations: new Dictionary<string, AnnotationValues>
{
{
"ServiceTableColumn",
new AnnotationValues(oldValue: null, newValue: "CreatedAt")
},
}),
UpdatedAt = c.DateTimeOffset(precision: 7,
annotations: new Dictionary<string, AnnotationValues>
{
{
"ServiceTableColumn",
new AnnotationValues(oldValue: null, newValue: "UpdatedAt")
},
}),
Deleted = c.Boolean(nullable: false,
annotations: new Dictionary<string, AnnotationValues>
{
{
"ServiceTableColumn",
new AnnotationValues(oldValue: null, newValue: "Deleted")
},
}),
})
.PrimaryKey(t => t.Id)
.Index(t => t.CreatedAt, clustered: true);
}
Я хочу изменить это имя первичного ключа «Id» на «PersonId», поэтому я добавляю свойство первичного ключа, как показано ниже.
public class Person : EntityData
{
public string PersonId;
....
}
Но это не сработало. «Id» не был заменен на «PersonId», а просто добавлен как поле клиента в файл миграции. Итак, я добавил атрибут [Key], но он сделал ошибку, и я получил сообщение ниже.
«Невозможно определить порядок составных первичных ключей для типа . Используйте метод ColumnAttribute или HasKey, чтобы указать порядок составных первичных ключей».
Как я могу изменить имя первичного ключа?