实体框架SaveChanges是否异常?

时间:2020-03-28 11:44:53

标签: c# sql-server entity-framework-6

我正在尝试使用Entity Framework 6在SQL数据库中进行插入,但是我陷入了无法解决的问题。

我一直遇到的错误是:

UpdateException:“ Connect.CompanyFinancialDetails”中的实体参与“ Company_CompanyFinancialDetails”关系。找到0个相关的'Company_CompanyFinancialDetails_Source'。 1个“ Company_CompanyFinancialDetails_Source”预期为

我有以下两个实体:

public class Company
{
    public long CUI { get; set; }

    public string UserName { get; set; }
    public string CompanyName { get; set; }
    public string Symbol { get; set; }
    public int? SharesCount { get; set; }
    public decimal? SharePrice { get; set; }

    public virtual Account Account { get; set; }
    public virtual CompanyFinancialDetails CompanyFinancialDetails { get; set; }
}

public class CompanyFinancialDetails
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    // other properties
    public decimal? NumberOfEmployees { get; set; }      
    public virtual Company Company { get; set; }
}

这是Fluent API配置:

    public DbSet<Account> SignUpModels { get; set; }
    public DbSet<Company> Companies { get; set; }

    public DbSet<CompanyFinancialDetails> CompanyFinancialDetails { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Account>()
           .HasKey(k => k.Id)
           .HasOptional(s => s.Company)
           .WithRequired(d => d.Account);

        modelBuilder.Entity<Company>()
           .HasKey(k => k.CUI)
           .HasOptional(s => s.CompanyFinancialDetails)
           .WithRequired(d => d.Company);
    }

我想要建立的关系是1-很多(一个Company有很多CompanyFinancialDetails)。

这是我将对象添加到数据库中的代码:

Company co = Context.Find(username);

foreach (CompanyFinancialDetails s in c)
{                       
    s.Company = co;
}

a.CompanyFinancialDetails.AddRange(c);
a.SaveChanges();

我得到CompanyFinancialDetails的列表,并使用AddRange方法添加它们。我之前遇到过这个问题,我所做的就是将虚拟属性对象添加到我想插入数据库中的对象中,并且它可以正常工作。这就是我在这里尝试做的:Find()方法获取与CompanyFinancialDetails相关的公司对象,并且对于每个CompanyFinancialDetails对象,一个Company虚拟属性将添加相关公司对象。

好吧,它不起作用,当调用SaveChanges()方法时,出现了该错误。任何帮助,将不胜感激。

0 个答案:

没有答案