c# - 实体框架 SaveChanges 中的异常?
问题描述
我正在尝试使用 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-many(一个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()
调用该方法时,我得到了那个错误。任何帮助,将不胜感激。
解决方案
推荐阅读
- javascript - 根据 setTimeout/Button Click 使用 Javascript 打开弹出窗口/模式
- python - 在 Pandas 数据框中查找子字符串的前任和后继
- elasticsearch - Elastic_exporter 无法连接启用 https 的 uri
- python - os.path.join 不加入目录和文件
- java - 动态访问动态端点
- rust - actix-session、sqlx、async-graphql 的错误问题
- javascript - 如何使用 vue-router 设置背景颜色
- c# - .NET 代码优先 gRPC 中的 MethodName 转换
- r - 将指定的列除以相同的值
- arrays - 如何从具有不同索引的 Laravel 对象数组中获取 2 个最高值