按照我的代码(只是演示疑问),这段代码我在我的服务中有一个接收用户和保存列表的方法,唯一的业务规则是检查用户是否已经存在。
还有一个关于该调用的日志,这个想法很简单,它会安静地工作,我的疑问是,我做了2 SaveChanges ()
并且它似乎是错的,我怎么能改进这个代码?我以为我只会在CreateUser
方法()中调用一次,但这样做会很危险,因为在"用户"中可能会重复使用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();
}
}
答案 0 :(得分:0)
public bool CreateUser(List<User> users) {
foreach (var user in users) {
new UserDomain().createUser(context, user);
new LogDomain().createLog(context, new Log { UserCreated = user .... });
}
context.SaveChanges();
}
答案 1 :(得分:-1)
没有解决,因为我可以拥有CPF的“用户”重复列表。除此之外,我的班级“UserDomain”将承担更多的责任,伤害模式。