C# 获取使用 SaveChangesAsync 插入的列表 ID
C# Get List Ids Inserted With SaveChangesAsync
我使用 net core api 控制器和带有 React 的客户端。
我想在插入数据库后获取列表机会的详细信息,但我不知道如何获取添加数据的列表 ID?
我的代码插入数据。
var customers = await db.Customers.Where(c =>
c.Categories.Any(cate =>
model.CustomerCategories.Contains(cate.CategoryId)
)
).ToListAsync();
foreach(var customer in customers) {
if (String.IsNullOrEmpty(model.Name)) {
opportunityName = customer.FullName;
}
var opportunity = new Opportunity {
StepId = model.StepId,
Name = opportunityName,
Email = customer.Email,
Phone = customer.Phone,
CustomerId = customer.Id,
Status = IdentityStatus.Active,
ExpectedRevenue = model.ExpectedRevenue,
Probability = model.Probability,
Notes = model.Note,
Deadline = model.Deadline,
OwnerId = OwnerId,
Reason = model.Reason,
Revenue = model.Revenue,
CompleteDate = model.CompleteDate,
};
db.Opportunities.Add(opportunity);
}
await db.SaveChangesAsync();
跟踪您要添加的实体,调用 SaveChangesAsync
然后检查它们。 EF 将填充他们的密钥。
这里有一些伪代码可以说明这个想法:
var customers = await db.Customers.Where(c =>
c.Categories.Any(cate =>
model.CustomerCategories.Contains(cate.CategoryId)
)
).ToListAsync();
var opportunities = new List<Opportunity>(customers.Count);
foreach(var customer in customers) {
if (String.IsNullOrEmpty(model.Name)) {
opportunityName = customer.FullName;
}
var opportunity = new Opportunity {
StepId = model.StepId,
Name = opportunityName,
Email = customer.Email,
Phone = customer.Phone,
CustomerId = customer.Id,
Status = IdentityStatus.Active,
ExpectedRevenue = model.ExpectedRevenue,
Probability = model.Probability,
Notes = model.Note,
Deadline = model.Deadline,
OwnerId = OwnerId,
Reason = model.Reason,
Revenue = model.Revenue,
CompleteDate = model.CompleteDate,
};
opportunities.Add(opportunity);
//db.Opportunities.Add(opportunity);
}
db.Opportunities.AddRange(opportunities);
await db.SaveChangesAsync();
//foreach (var opportunity in opportunities)
// Console.WriteLine(opportunity.YourIdPropertyHere);
我使用 net core api 控制器和带有 React 的客户端。 我想在插入数据库后获取列表机会的详细信息,但我不知道如何获取添加数据的列表 ID?
我的代码插入数据。
var customers = await db.Customers.Where(c =>
c.Categories.Any(cate =>
model.CustomerCategories.Contains(cate.CategoryId)
)
).ToListAsync();
foreach(var customer in customers) {
if (String.IsNullOrEmpty(model.Name)) {
opportunityName = customer.FullName;
}
var opportunity = new Opportunity {
StepId = model.StepId,
Name = opportunityName,
Email = customer.Email,
Phone = customer.Phone,
CustomerId = customer.Id,
Status = IdentityStatus.Active,
ExpectedRevenue = model.ExpectedRevenue,
Probability = model.Probability,
Notes = model.Note,
Deadline = model.Deadline,
OwnerId = OwnerId,
Reason = model.Reason,
Revenue = model.Revenue,
CompleteDate = model.CompleteDate,
};
db.Opportunities.Add(opportunity);
}
await db.SaveChangesAsync();
跟踪您要添加的实体,调用 SaveChangesAsync
然后检查它们。 EF 将填充他们的密钥。
这里有一些伪代码可以说明这个想法:
var customers = await db.Customers.Where(c =>
c.Categories.Any(cate =>
model.CustomerCategories.Contains(cate.CategoryId)
)
).ToListAsync();
var opportunities = new List<Opportunity>(customers.Count);
foreach(var customer in customers) {
if (String.IsNullOrEmpty(model.Name)) {
opportunityName = customer.FullName;
}
var opportunity = new Opportunity {
StepId = model.StepId,
Name = opportunityName,
Email = customer.Email,
Phone = customer.Phone,
CustomerId = customer.Id,
Status = IdentityStatus.Active,
ExpectedRevenue = model.ExpectedRevenue,
Probability = model.Probability,
Notes = model.Note,
Deadline = model.Deadline,
OwnerId = OwnerId,
Reason = model.Reason,
Revenue = model.Revenue,
CompleteDate = model.CompleteDate,
};
opportunities.Add(opportunity);
//db.Opportunities.Add(opportunity);
}
db.Opportunities.AddRange(opportunities);
await db.SaveChangesAsync();
//foreach (var opportunity in opportunities)
// Console.WriteLine(opportunity.YourIdPropertyHere);