Я пытаюсь сделать вставку в базу данных SQL, используя Entity Framework 6, и я застрял в этой проблеме, которую не могу решить.
Ошибка, которую я продолжаю получать:
UpdateException: объекты в «Connect.CompanyFinancialDetails» участвуют в отношениях «Company_CompanyFinancialDetails». 0 связанных 'Company_CompanyFinancialDetails_Source' были найдены. 1 'Company_CompanyFinancialDetails_Source' ожидается
У меня есть 2 объекта:
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()
, я получаю эту ошибку. Любая помощь будет оценена.