我在EF6和EF Core之间遇到了一些不同的行为,想知道我是否可以像在EF6中一样在EF Core中得到相同的行为,例如通过更改一些配置。
public partial class Parent
{
public int Id { get; set; }
public virtual ICollection<Child> Childs { get; set; }
}
public partial class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
public string SomeProperty { get; set; }
public virtual Parent Parent { get; set; }
}
public class MyContext : DbContext
{
public virtual DbSet<Parent> Parents { get; set; }
public virtual DbSet<Child> Childs { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Child>()
.HasOne(c => c.Parent)
.WithMany(p => p.Childs)
.HasForeignKey(c => c.ParentId);
modelBuilder.Entity<Parent>()
.HasMany(p => p.Childs)
.WithOne(c => c.Parent);
}
以下代码使用EF6但不使用EF Core保存新的子代
var db = new MyContext();
var parent = db.Parents.First();
var child = new Child
{
SomeProperty = "foobar",
Parent = parent
}
db.SaveChanges();
当然,当我添加以下内容时,在EF Core中也起作用。
db.Childs.Add(child);
编辑:对于EF6模型ObjectContext
和EDMX生成的类,已经使用。