我读到 EF 本身就是一个工作单元和存储库,所以我真的不想制作一个存储库层和另一个 UoW,除非确实有必要。
不过,我想知道这一点。我有城市服务和场地服务。
我有一个 FindVenue 方法
public void FindVenue()
{
// find venue in db
// If not in db - find from 3rd party api
// If from 3rd party api check if city exits in db
// If city does not exist create a city record in db
// If venue does not exist create a new venue record in db
context.SaveChanges();
}
现在我想知道 CreateCity 方法应该有 context.SaveChanges();
还是应该将其添加到 DbSet 中,然后在 FindVenue 完成创建新场所时,它可以插入两条记录。
这样,只有 1 次调用 db,如果一次失败,它们都会被回滚(你当然可以说这些是分开的,如果可以插入城市,那么为什么不这样做)
我看到的一个问题是,如果其他人打电话说来自控制器的 CreateCity,因为我可以有一种直接的方式将 City 插入我的数据库,那么控制器将需要做context.SaveChanges()
这将是不好的,否则我将不得不有一个名为 CreateAndSaveCity() 的新方法;