EF Core与EF6:通过添加导航属性进行保存

时间:2018-11-28 13:56:32

标签: c# entity-framework-6 ef-core-2.1

我在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生成的类,已经使用。

0 个答案:

没有答案