2014-01-23 176 views
-1

按照我的代碼(只是演示的懷疑),這段代碼我有一個方法在我的服務中接收用戶列表並保存,唯一的規則是檢查是否用戶已經存在。兩次調用方法「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(); 
    }  
} 
+0

真的很難說出你在這裏問的問題,看起來這是http://codereview.stackexchange.com/更可能的候選人,但似乎你可能正在尋找交易。請參閱http://stackoverflow.com/questions/867643/how-to-use-transactions-with-a-datacontext –

回答

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

解決不了,因爲我可以有「用戶」 CPF重複列表。另外,這樣,我的班級「UserDomain」將會承擔更多的責任,造成傷害。

+0

修改您的問題,而不是發表評論作爲回答 – user2711965

+0

什麼?我不明白 – Junior