gpt4 book ai didi

c# - Entity Framework 是否自动保存相关类?

转载 作者:可可西里 更新时间:2023-11-01 08:45:33 28 4
gpt4 key购买 nike

假设我们有这样的类

public class A{
string someField { get; set; }
public virtual B B {get; set; }
}

public class B {
int someIntField {get; set; }

[ForeignKey("Id")]
[Required]
public virtual A A { get; set; }
}

在代码中,我为它们创建了新的实例,并建立了如下关系:

A a = new A () { someField = "abcd"};
B b = new B () { someIntField = 42 };

A.B = b;
B.A = a;

我是否应该像这样使用 DBContext 来保存这两个类:

using (var db = new myDbContext()) {
myDbContext.As.Add(A);
myDbContext.Bs.Add(B);
myDBContext.SaveChanges();
}

或者这样保存:

using (var db = new myDbContext()) {
myDbContext.As.Add(A);
myDbContext.SaveChanges();
}

是否足以将相关对象存储到数据库中?

最佳答案

从您的示例来看,如果您实例化新的实体对象,然后将子对象分配给父对象的属性,那么 EF 实际上会创建一个新的子实例(记录)并将其映射到父对象作为引用。

你的代码片段有点困惑,因为你有从 A 到 B 和 B 到 A 的引用,但请考虑以下几点:

如果您有 2 个实体:

public class A
{
public int Id;
}

public class B
{
public int Id;
public A A;
}

保存时你做了这样的事情:

A a = new A();
B b = new B();
b.A = a;
dbcontext.SaveChanges();

然后 EF 会为 A 创建一条新记录,为 B 创建一条新记录,并将新创建的 A 记录的引用添加到 B。

参见 this发帖了解更多详情

关于c# - Entity Framework 是否自动保存相关类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19546475/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com