2016-02-14 30 views
1

我首先使用EF代码。模型生成器添加一列多?

这是我的模型构建器

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

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

和国家A级:

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数据库表中,并且当我不使用modelbuilder时,消息循环代码发生错误...(我说我删除了额外的代码) ,所以如何在没有这个“State_StateId”额外列的情况下先使用代码。

请原谅我英文写作不好。

回答

0

如果你想删除State_StateId列设置的配置完全像下面的代码,不要让WithMany空:

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

或者你可以只取出流利的API配置,让EF使用默认配置约定,并将为您设置所有表,主键,外键和列名。

+0

谢谢你的帮助,它很有用。 – user3087175