Entity framework 无法与EF fluent API建立一对多关系
我正试图通过Entity framework 无法与EF fluent API建立一对多关系,entity-framework,ef-fluent-api,.net-core-3.1,Entity Framework,Ef Fluent Api,.net Core 3.1,我正试图通过fluent-api使用EF-Core配置一对多关系,我不断收到以下错误: 表达式“x=>x.parent”不是有效的属性表达式。这个 表达式应表示简单的属性访问:“t=> t、 “我的财产”。(参数'propertyAccessExpression')” 型号 公共类父类{ 公共int ID{get;set;} 公共字符串名称{get;set;} 公共ICollection子项{get;set;} } 公营儿童{ 公共int ID{get;set;} 公共字符串名称{get;set
fluent-api
使用EF-Core
配置一对多关系,我不断收到以下错误:
表达式“x=>x.parent”不是有效的属性表达式。这个
表达式应表示简单的属性访问:“t=>
t、 “我的财产”。(参数'propertyAccessExpression')”
型号
公共类父类{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共ICollection子项{get;set;}
}
公营儿童{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共家长;
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) { }
}
公共类MyContext:DbContext{
公共数据库集父项{get;set;}
公共DbSet子项{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder){
基于模型创建(modelBuilder);
modelBuilder.Entity().HasKey(x=>x.ID);
modelBuilder.Entity().HasKey(x=>x.ID);
modelBuilder.Entity()
.HasOne(x=>x.parent)
.有许多(y=>y.孩子)
.HasForeignKey(t=>t.ParentId);
}
公共MyContext(DbContextOptions选项):基本(选项){}
}
用法
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();
}
static async Task Main(字符串[]args)
{
string connectionString=“[someconnectionstring]”
var optionsBuilder=new DbContextOptionsBuilder();
optionsBuilder.UseSqlServer(connectionString);
MyContext上下文=新的MyContext(optionsBuilder.Options);
wait context.Parents.AddAsync(新父项{
Name=“myparent”,
Children=新列表(){
新子项{Name=“Child1”},
新子项{Name=“Child2”}
});//我在这里得到了错误
wait context.saveChangesSync();
}
子类中的父类是一个字段。它应该是公共属性。有关更多信息,请参阅
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();
}