2016-02-14 7 views
1

Сначала я использую EF-код.модель строителя добавить еще один столбец?

Это мой ModelBuilder

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 

     modelBuilder.Entity<Market>() 
      .HasRequired(s => s.State) 
      .WithMany() 
      .HasForeignKey(s => s.StateId) 
      .WillCascadeOnDelete(false); 
    } 

и Государственный Класс:

public class State 
{ 
    public State() 
    { 
     Markets = new HashSet<Market>(); 
    } 

    [Key] 
    public int StateId { get; set; } 

    public string StateName { get; set; } 

    // navigation property 

    public virtual ICollection<Market> Markets { get; set; } 
} 

и класс Рынок:

public class Market 
{ 
    [Key] 
    public int MarketId { get; set; } 

    public string MarketName { get; set; } 

    public int StateId { get; set; } 

    // navigation property 

    public virtual State State { get; set; } 

} 

Конечно, я удалить дополнительный код.

Проблема в том, когда я использую этот код, столбец State_StateId добавляет в свою таблицу Market в базе данных, и когда я не использую buildbuilder, произошла ошибка с кодом цикла сообщений и ... (я говорю, что я удаляю дополнительный код) , так как я могу использовать код сначала без этого дополнительного столбца «State_StateId».

простите за плохой английский язык документ.

ответ

0

Если вы хотите удалить State_StateId колонки установить конфигурацию полностью как код ниже и не позволяйте WithMany пустым:

modelBuilder.Entity<Market>() 
     .HasRequired(s => s.State) 
     .WithMany(p => p.Markets) 
     .HasForeignKey(s => s.StateId) 
     .WillCascadeOnDelete(false); 

Или вы можете просто удалить Fluent конфигурации API и пусть EF использовать конфигурацию по умолчанию и установит для вас все таблицы, первичные ключи, внешние ключи и имя столбца.

+0

Благодарим за помощь. Было полезно. – user3087175

Смежные вопросы