3

我已经花了最后几天试图解决我的问题,遗憾的是没有任何结果。我已经在这里阅读了无数关于这个主题的帖子,但我一直收到同样的错误。“'字段列表'中的未知列'Extent1.foo_id'”......我做错了什么?我的映射必须在某种程度上是错误的,但我看不到如何......

编辑:首先是数据库!

我还有另一个类“Doo”,它与“Foo”有多对多的关系,但那个工作正常。

提前致谢!

  public class Foo
        {

        public Foo()
            {
            this.FooBoo = new Collection<FooBoo>();
            }        

        public String FooId { get; set; }        
        public virtual ICollection<FooBoo> FooBoo { get; set; }

        }


         public class Boo
            {

            public Boo()
                {
                this.FooBoo = new Collection<FooBoo>();    
                }

                    public String BooId { get; set; }    
                    public virtual ICollection<FooBoo> FooBoo { get; set; }  
                }

         public class FooBoo
            {        
                public String Fooid { get; set; }

                public virtual Foo Foo { get; set; }

                public String Booid { get; set; }        

                public virtual Boo Boo { get; set; } 

                public Boolean RandomProperty { get; set; }       

            }

         public class BooMapper : EntityTypeConfiguration<Boo>
            {

                public BooMapper()
                {

                    this.HasKey(t => t.BooId);


                    this.Property(t => t.BooId).HasColumnName("booid");

            this.ToTable("boo", "fooboodb");

                    this.HasMany(t => t.FooBoo)
                        .WithRequired()
                        .HasForeignKey(t => t.Booid);
                }
            }


         public class FooMapper : EntityTypeConfiguration<Foo>
            {

                public FooMapper()
                {

                    this.HasKey(t => t.FooId);


                    this.Property(t => t.FooId).HasColumnName("fooid");
                        .
            this.ToTable("foo", "fooboodb");

                    this.HasMany(t => t.FooBoo)
                        .WithRequired()
                        .HasForeignKey(t => t.Booid);
                }
            }

         public class FooBooMapper : EntityTypeConfiguration<FooBoo>
            {
            public FooBooMapper()
                {

                this.HasKey(t => new {t.Fooid, t.Booid});

                this.Property(t => t.Fooid);

                this.Property(t => t.Booid);

                this.Property(t => t.RandomProperty);

                this.ToTable("fooboo", "fooboodb");
                this.Property(t => t.Fooid).HasColumnName("Fooid"); 
                this.Property(t => t.Booid).HasColumnName("Booid");
                this.Property(t => t.RandomProperty).HasColumnName("randomproperty");

                }

            }
4

1 回答 1

1

您必须为这两个调用提供一个 lambda 表达式WithRequired才能指定反向导航属性。否则 EF 将假定它们属于另一个导致带有下划线的外键的附加关系:

public class BooMapper : EntityTypeConfiguration<Boo>
{
    public BooMapper()
    {
        //...

        this.HasMany(t => t.FooBoo)
            .WithRequired(fb => fb.Boo)
            .HasForeignKey(t => t.Booid);
    }
}

public class FooMapper : EntityTypeConfiguration<Foo>
{
    public FooMapper()
    {
        //...

        this.HasMany(t => t.FooBoo)
            .WithRequired(fb => fb.Foo)
            .HasForeignKey(t => t.Booid);
    }
}
于 2013-08-10T19:15:35.997 回答