Не удается установить отношения "один-ко-многим" с EF fluent API.

Я пытаюсь настроить отношения "один ко многим", используя EF Core через fluent api и я продолжаю получать следующую ошибку:

Выражение "x => x.parent" не является допустимым выражением свойства. Выражение должно представлять простой доступ к свойству: 't => t.MyProperty'. (Параметр 'propertyAccessExpression')'

Модель (ы)

        public class Parent {
            public int ID { get; set; }
            public string Name { get; set; }
            public ICollection<Child> Children { get; set; }
        }
        public class Child {
            public int ID { get; set; }
            public string Name { get; set; }
            public Parent parent;
            public int ParentId { get; set; }
        }

Контекст

public class MyContext : DbContext {
            public DbSet<Parent> Parents { get; set; }
            public DbSet<Child> Children { get; set; }
            protected override void OnModelCreating(ModelBuilder modelBuilder) {

                base.OnModelCreating(modelBuilder);
                modelBuilder.Entity<Child>().HasKey(x => x.ID);
                modelBuilder.Entity<Parent>().HasKey(x => x.ID);

                modelBuilder.Entity<Child>()
                                .HasOne(x => x.parent)
                                .WithMany(y => y.Children)
                                .HasForeignKey(t => t.ParentId);
            }

            public MyContext(DbContextOptions options):base(options) { }
        }

Применение

 static async Task Main(string[] args)
        {
            string connectionString = "[someconnectionstring]"
            var optionsBuilder = new DbContextOptionsBuilder<MyContext>();
            optionsBuilder.UseSqlServer(connectionString);
            MyContext context = new MyContext(optionsBuilder.Options);
            await context.Parents.AddAsync(new Parent { 
                                               Name = "myparent", 
                                               Children = new List<Child>() {
                                                                new Child { Name = "Child1" },
                                                                new Child { Name = "Child2" } }
                                               }); //i am getting the error here
            await context.SaveChangesAsync();
}

1 ответ

Решение

parent в Childкласс - это поле. Он должен быть общественной собственностью. Дополнительные сведения см. На https://docs.microsoft.com/en-us/ef/ef6/modeling/code-first/fluent/types-and-properties.

Другие вопросы по тегам