Entity Framework не добавляет [Ключ]

1

Я создал модель, которая содержит этот объект:

Изображение 174551

Теперь, когда EF btw. CodeGenerator генерирует код для этого объекта, отсутствует аннотация для ПК:

public partial class tLieferscheinPos
{
    public int kLieferscheinPos { get; set; }
    public int kLieferschein { get; set; }
    public Nullable<int> kBestellPos { get; set; }
    public Nullable<decimal> fAnzahl { get; set; }
}

Когда я бегу теперь с созданием DbContext с connectionString (где eazybusinessEntitis - DbContext):

this.context = new eazybusinessEntities(connStr);            

EF всегда будет обновлять мою базу данных или выбросить исключение (когда я OnModelCreating throw new UnintentionalCodeFirstException(); в OnModelCreating):

One or more validation errors were detected during model generation:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'tLieferscheinPos' has no key defined. Define the key for this EntityType.   
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'tLieferscheinPos' is based on type 'tLieferscheinPos' that has no keys defined.

Когда я добавляю [Key] в свойство kLieferscheinPos, он работает правильно. Но это изменение всегда будет перезаписано, когда я заново создаю код из модели.

Что я могу сделать, чтобы решить эту проблему правильно?

  • 0
    Ну, разве kLieferscheinPos не является kLieferscheinPos первичного ключа в вашей таблице? Так и должно быть ! (и тогда, я полагаю, EF распознает его как ключ и соответственно установит атрибут)
  • 0
    Вы используете модель первый подход в EF?
Показать ещё 2 комментария
Теги:
entity-framework

1 ответ

0
Лучший ответ

Вы можете объявить ключ в своем классе контекста...

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<tablename>().HasKey(e => e.keycolumnname);
 }

Если вы используете viewmodel, вы можете объявить [ключ] там...

public class products
{
    [Key]
    public int productid { get; set; }
    ...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню