我正在创建一些模型,并使用“ InsertAsync”插入它们,最后,我将更改保存在实体框架核心中。
我想做的是:
MasterDbContext.table1.AddAsync(object1);
var object2 = new table2()
{
Action = 1,
PrimaryRef = object1.primaryKey,
};
MasterDbContext.table2.AddAsync(object2);
但是那个值是空的,你知道我怎么能第二次插入那个值?
我的意思是,如果它们一个接一个地执行,则实体框架应该能够映射值,如果是这样,那么有人知道吗?谢谢。
***更新
基本上是为了使其更简单:
我有一个foreach循环,其中在 table1 和 table2 中添加(不保存)多个对象。
在同一循环中,我必须将两个表的主键记录在 table3 (两个不同的行)
然后保存所有内容。
我该如何让EF知道要使用这些primaryKey?
答案 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);