Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体拆分将数据保存到数据库_C#_Asp.net Mvc 3_Entity Framework - Fatal编程技术网

C# 使用实体拆分将数据保存到数据库

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

我正在构建报告系统,但在将数据保存到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? 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。