C# 使用实体拆分将数据保存到数据库
我正在构建报告系统,但在将数据保存到db(实体拆分)时遇到问题 我的实体:C# 使用实体拆分将数据保存到数据库,c#,asp.net-mvc-3,entity-framework,C#,Asp.net Mvc 3,Entity Framework,我正在构建报告系统,但在将数据保存到db(实体拆分)时遇到问题 我的实体: public class Report { [Key] public int ReportId { get; set; } public string Title { get; set; } public int? DateRange { get; set; } public int Layout { get; set; } public DateTime? DateFro
public class Report
{
[Key]
public int ReportId { get; set; }
public string Title { get; set; }
public int? DateRange { get; set; }
public int Layout { get; set; }
public DateTime? DateFrom { get; set; }
public DateTime? DateTo { get; set; }
public int OwnerId { get; set; }
public DateTime DateCreated { get; set; }
public virtual List<ReportCharts> ReportCharts { get; set; }
public virtual List<ReportElements> ReportElements { get; set; }
}
public class ReportElements
{
[Key, Column(Order = 1)]
public int ReportId { get; set; }
[Key, Column(Order = 2)]
public string ElementName { get; set; }
public Boolean Active { get; set; }
}
//Entity class ReportCharts
public class ReportCharts
{
[Key, Column(Order = 1)]
public int ReportId { get; set; }
[Key, Column(Order = 2)]
public string ChartId { get; set; }
public Boolean Active { get; set; }
}
当我使用上述代码进行保存时,数据仅保存到报表表。如何修改此代码以将数据保存到所有三个表中
public void Save(Report report)
{
assignSettingsToEntity(report);
assignElementsToEntity(report);
assignChartsToEntity(report);
context.Reports.Add(report);
context.SaveChanges();
}
public void assignElementsToEntity(Report report)
{
report.ReportElements = new List<ReportElements>();
foreach (ReportElement e in report.Elements)
{
ReportElements temp = new ReportElements();
temp.ElementName = e.Line.Name;
temp.Active = true;
report.ReportElements.Add(temp);
}
}
public void assignChartsToEntity(Report report)
{
report.ReportCharts = new List<ReportCharts>();
foreach (string c in report.getSettings().Charts)
{
ReportCharts temp = new ReportCharts();
temp.ChartId = c;
temp.Active = true;
report.ReportCharts.Add(temp);
}
}
非常感谢您的帮助我设法使它工作起来了。当我保存它时,它会自动将新键分配给所有三个表
public void Save(Report report)
{
assignSettingsToEntity(report);
assignElementsToEntity(report);
assignChartsToEntity(report);
context.Reports.Add(report);
context.SaveChanges();
}
public void assignElementsToEntity(Report report)
{
report.ReportElements = new List<ReportElements>();
foreach (ReportElement e in report.Elements)
{
ReportElements temp = new ReportElements();
temp.ElementName = e.Line.Name;
temp.Active = true;
report.ReportElements.Add(temp);
}
}
public void assignChartsToEntity(Report report)
{
report.ReportCharts = new List<ReportCharts>();
foreach (string c in report.getSettings().Charts)
{
ReportCharts temp = new ReportCharts();
temp.ChartId = c;
temp.Active = true;
report.ReportCharts.Add(temp);
}
}
公共作废保存(报告)
{
转让给实体(报告);
转让实体(报告);
转让实体(报告);
context.Reports.Add(报告);
SaveChanges();
}
公共无效转让实体(报告)
{
report.ReportElements=新列表();
foreach(report.Elements中的ReportElement e)
{
ReportElements temp=新的ReportElements();
temp.ElementName=e.Line.Name;
激活温度=真;
report.ReportElements.Add(临时);
}
}
公共无效转让实体(报告)
{
report.ReportCharts=新列表();
foreach(report.getSettings()图表中的字符串c)
{
ReportCharts temp=新的ReportCharts();
温度ChartId=c;
激活温度=真;
报告。报告图表。添加(临时);
}
}
我设法让它工作了。当我保存它时,它会自动将新键分配给所有三个表
public void Save(Report report)
{
assignSettingsToEntity(report);
assignElementsToEntity(report);
assignChartsToEntity(report);
context.Reports.Add(report);
context.SaveChanges();
}
public void assignElementsToEntity(Report report)
{
report.ReportElements = new List<ReportElements>();
foreach (ReportElement e in report.Elements)
{
ReportElements temp = new ReportElements();
temp.ElementName = e.Line.Name;
temp.Active = true;
report.ReportElements.Add(temp);
}
}
public void assignChartsToEntity(Report report)
{
report.ReportCharts = new List<ReportCharts>();
foreach (string c in report.getSettings().Charts)
{
ReportCharts temp = new ReportCharts();
temp.ChartId = c;
temp.Active = true;
report.ReportCharts.Add(temp);
}
}
公共作废保存(报告)
{
转让给实体(报告);
转让实体(报告);
转让实体(报告);
context.Reports.Add(报告);
SaveChanges();
}
公共无效转让实体(报告)
{
report.ReportElements=新列表();
foreach(report.Elements中的ReportElement e)
{
ReportElements temp=新的ReportElements();
temp.ElementName=e.Line.Name;
激活温度=真;
report.ReportElements.Add(临时);
}
}
公共无效转让实体(报告)
{
report.ReportCharts=新列表();
foreach(report.getSettings()图表中的字符串c)
{
ReportCharts temp=新的ReportCharts();
温度ChartId=c;
激活温度=真;
报告。报告图表。添加(临时);
}
}
我想您需要研究使用transactionscope,输入事务中的所有记录,根据需要检索其他保存的PK。我想您需要研究使用transactionscope,输入事务中的所有记录,根据需要检索其他保存的PK。