【发布时间】:2019-05-15 16:02:53
【问题描述】:
例如,您有两个通过 ICollection 属性连接(代码优先)的表。
public class EntityEnviroment
{
[Key]
public virtual int env_id { get; set; }
public virtual string env_name { get; set; }
public virtual string env_country { get; set; }
public virtual ICollection<StcEntityFailedReportDetail> failedReportDetails { get; set; }
}
public class EntityFailedReportDetail
{
[Key]
public virtual int failed_reports_details_id { get; set; }
public virtual int report_id { get; set; }
public virtual string report_status { get; set; }
public virtual StcEntityEnviromentStatus StcEntityEnviromentStatus { get; set; }
}
对于一个表,我为我的条目创建了一个上下文实例,然后我添加了它。最后我保存了它。对于多个表,我这样做了:
using (var db = new StatusPlatformContext())
{
var entryDetail = new EntityFailedReportDetail();
foreach (var value in result.failed_report_details)
{
entryDetail.report_id = value.report_id;
entryDetail.report_status = value.report_status;
db.StcEntityFailedReportDetails.Add(entryDetail);
}
var entry = new EntityEnviroment
{
env_name = result.environment_status.env_name,
env_country = "Ger",
failedReportDetails = new List<EntityFailedReportDetail> { entryDetail }
};
entryDetail.EntityEnviroment = entry;
db.EntityEnviromentStat.Add(entry);
db.SaveChanges();
}
如果我这样做,只会保存最后一个详细信息条目。如果我将 db.SaveChanges() 添加到 foreach 中,我只会在三个详细信息行中的最后一个的外键列中获得一个条目。
我应该如何构建代码?我发现的所有示例都只显示一个表而不是多个表。有没有我应该阅读的模式示例?
谢谢
【问题讨论】:
-
我有两个关于使用 EF 和 Bulk 插入多个表的链接。我希望能帮助你。 gist.github.com/Boggin/763dbaf1b760bb298156 和这个docs.microsoft.com/en-us/dotnet/api/…
-
var entryDetail = new EntityFailedReportDetail();为什么它不在你的 foreach 循环中?你也需要坚持entryDetail
标签: c# entity-framework