c# - EF Core vs EF6:通过添加导航属性保存
问题描述
我在 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);
编辑:ObjectContext
已使用 EDMX 生成的 EF6 模型和类。
解决方案
推荐阅读
- internet-explorer-11 - IE11 重定向后忽略 X-Frame-Options
- c# - 如何使用ajax将模型值从上一页传递到新页面发布方法?
- oracle - 在连接条件下使用 CASE 更新 PL/SQL?
- android - 使用 DownloadManager 下载 PDF 文件
- javascript - Flutter:在读取 Firebase 数据时进行异步操作
- node.js - AWS Lambda GraphicsMagick 错误:找不到 gm/convert 二进制文件”
- bash - /etc/passwd Bash Shell 的输出
- c# - 如何将值截断到一定的小数位数?
- vba - 如何将 Outlook 中的焦点移至使用 VBA 的电子邮件列表?
- components - UML 中定义接口但不需要或提供接口的组件