按照我的代碼(只是演示的懷疑),這段代碼我有一個方法在我的服務中接收用戶列表並保存,唯一的規則是檢查是否用戶已經存在。兩次調用方法「context.saveChanges」
還有一個這個調用的日誌,這個想法很簡單,它會工作安靜,我的疑問是,我正在做2 SaveChanges()
這似乎是錯誤的,我怎麼能改善這個代碼?我以爲我只會在CreateUser
方法()中調用一次,但這會很危險,因爲在「Users」列表中可能會有CPF的重複,所以我必須創建一個驗證此列表的列表,但希望避免這種情況,因爲在我看來,至少是這些問題,我認爲我在解決方案架構上犯錯。
public class Service : IMyService {
private UserEntitiescontext context = new UserEntities();
// Service method
public bool CreateUser(List<User> users) {
foreach (var user in users) {
new UserDomain().createUser(context, user);
new LogDomain().createLog(context, new Log { UserCreated = user .... });
}
}
}
public class UserDomain() {
private createUser(UserEntities context, User user) {
if (context.Users.Where(f=>f.CPF == user.CPF).FirstOrDefault() != null) {
context.Attach(user);
context.SaveChanges();
}
}
}
public class LogDomain() {
private createLog(UserEntities context, Log log) {
context.Attach(log);
context.SaveChanges();
}
}
真的很難說出你在這裏問的問題,看起來這是http://codereview.stackexchange.com/更可能的候選人,但似乎你可能正在尋找交易。請參閱http://stackoverflow.com/questions/867643/how-to-use-transactions-with-a-datacontext –