#c# #entity-framework-core
#c# #entity-framework-core
Вопрос:
В файле контекста EF у меня есть жестко заданное имя ключа / имя индекса OnModelCreating
. Администратор базы данных перестроил эти индексы / ключи с другими именами. Должен ли я снова обновлять эти ссылки в коде? или есть какой-либо другой подход?
protected override void OnModelCreating(ModelBuilder modelBuilder){
modelBuilder.Entity<Customert>(entity =>
{
entity.HasKey(e => e.custId)
.HasName("PK__cust__4E739DAA");
}
}
Комментарии:
1. Почему вы указали имя ключа в первую очередь, если администратор базы данных может его изменить? Почему бы не использовать собственное имя вместо жестко заданного автоматически созданного (т.Е. Случайного)?
2. Кстати, перестройка индекса не изменит его имя. Администратор базы данных либо переименовал его, либо удалил и создал заново.
3. Администратор базы данных тоже меняет свое имя при перестройке, а не под моим контролем. могу ли я игнорировать строку hasName? почему это свойство существует? Я не хочу ничего жестко кодировать.
Ответ №1:
В качестве опции вы можете использовать Key
атрибут непосредственно для свойства объекта, например
using System.ComponentModel.DataAnnotations;
public class Customer
{
[Key]
public int CustomerId {get;set;}
}
Комментарии:
1. «PK__cust__4E739DAA» жестко задано. Имя столбца не является проблемой.
2. @user6069595 не вводите автоматически сгенерированные имена в жестком коде. Используйте правильные имена, которые не заставляют администраторов баз данных переименовывать их ‘