我正在尝试使用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()
方法时,出现了该错误。任何帮助,将不胜感激。