在实体框架中的交易期间使用主键

时间:2019-01-28 14:52:18

标签: c# asp.net entity-framework entity-framework-core

我正在创建一些模型,并使用“ InsertAsync”插入它们,最后,我将更改保存在实体框架核心中。

我想做的是:

MasterDbContext.table1.AddAsync(object1);

var object2 = new table2()
            {
                Action = 1,
                PrimaryRef = object1.primaryKey,
            };

MasterDbContext.table2.AddAsync(object2);

但是那个值是空的,你知道我怎么能第二次插入那个值?

我的意思是,如果它们一个接一个地执行,则实体框架应该能够映射值,如果是这样,那么有人知道吗?谢谢。

***更新

基本上是为了使其更简单:

我有一个foreach循环,其中在 table1 table2 中添加(不保存)多个对象。

在同一循环中,我必须将两个表的主键记录在 table3 (两个不同的行)

然后保存所有内容。

我该如何让EF知道要使用这些primaryKey?

1 个答案:

答案 0 :(得分:1)

您需要在Entity Framework中定义两个数据库对象之间的外键关系。

因此,必须在第二个实体(表2)上添加

[ForeignKey("PrimaryRefId")] public table1 PrimaryRef { get; set; }

然后在您的table1中,做一个参考:

public Collection<table2> SecondaryObjects { get; set; }

现在EntiryFramework 知道表已经相关,您可以利用这种关系。

var t2 = new Table2 { Name = "Stuff child" };
var t1 = new Table1 { Name = "Stuff",  PrimaryRef = t2 };

MasterDbContext.table1.AddAsync(t1);