Исключение в Entity Framework SaveChanges? - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь сделать вставку в базу данных 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(), я получаю эту ошибку. Любая помощь будет оценена.

...