【发布时间】:2015-08-18 09:29:34
【问题描述】:
我有一个调用 webApi 的 Web 应用,我的 webApi 调用我的服务,我的服务调用我的 DbContext。
我有 2 个实体,内容和文件。这些是单独的实体,存储在单独的表中。
现在我还有一个针对内容的集合,称为文件。这用于将文件引用到内容实体。
实体框架因此创建了名为 Content、File 和 ContentFile 的表。我对实体框架的配置是这样的
public ContentConfig()
: base()
{
this.HasMany<File>(s => s.Files)
.WithMany(c => c.Contents)
.Map(e =>
{
e.MapLeftKey("ContentId");
e.MapRightKey("FileId");
e.ToTable("ContentFile");
});
}
对于我的 webApi,我正在发送我的内容数据,看起来像这样
Id = 1,
Files = {
{ Id = 1, Name = "Test" }
}
这里我有一个 ID 为 1 的内容实体和一个 ID 为 1 的文件。我正在传递它,因为我希望实体框架在 2 个实体之间创建关系。
在我的服务中,我有这个代码。
public Task<int> AddOrUpdateAsync(Content content)
{
// attach all files
foreach (var file in content.Files)
_context.Entry(file).State = EntityState.Modified;
_context.Entry(content).State = EntityState.Modified;
return _context.SaveChangesAsync();
}
所有这一切似乎都是更新我的内容实体并更新文件实体。没有插入关系?有人可以帮我插入关系吗?如果它已经存在于更新中会发生什么?实体框架会帮我解决这个问题吗?
当一切都断开时,似乎很难处理实体??还是这只是我?在我的单元测试中,这是可行的,但实体没有断开连接。
不确定它是否与它有关,但我正在使用 AutoMapper 从我的 webApi 模型创建我的实体。
【问题讨论】:
标签: c# entity-framework asp.net-web-api entity-framework-6