0
在我的申請,我有這樣的代碼:保存對象之前,添加一個角色。這個邏輯在哪裏?
public class Couple
{
public List<Role> Roles { get; set; };
public Couple()
{
//How can I add the role in the constructor?
//Is it correct to refer to the repository?
//If so, this will impact on my EF Code First
}
}
public class Role
{
public string Name { get; set; };
}
public class DataContext : DbContext
{
DbSet<Couple> Couples { get; set; }
DbSet<Role> Roles { get; set; }
}
public interface IRepository
{
void AddCouple(Couple couple);
}
public class Repository : IRepository
{
DataContext db = new DataContext();
public void AddCouple(Couple couple)
{
var role = (from r in db.Roles
where r.Name == "Couple"
select r).SingleOrDefault();
couple.Roles.Add(role); //This is a correct place?
db.Couples.Add(entity);
db.SaveChanges();
}
}
我也有假的存儲庫中的測試項目:
public class FakeRepository : IRepository
{
List<Couple> Couples = new List<Couple>();
ListRole> Roles = new List<Role>();
public void AddCouple(Couple couple)
{
var role = (from r in Roles
where r.Name == "Couple"
select r).SingleOrDefault();
couple.Roles.Add(role);
Couples.Add(entity);
}
}
在Repository
類AddCouple
方法,我想補充的作用。但我認爲這是不正確的地方。
我的問題是在哪裏放置邏輯,看在role
庫和填充couple
的角色列表。
並且能夠繼續構建測試。
好了,但即使是這樣,現在我的'我DbContext'將不得不重複的邏輯: 'VAR角色=(在_db.Roles從r 其中r.Name == 「情侶」 選擇R).SingleOrDefault (); couple.Roles.Add(role);' 我需要在保存之前爲'couple'添加一個'role',但不需要複製代碼。我不知道在哪裏。 – ridermansb
@Riderman de Sousa Barbosa,我不明白你在說什麼重複。我以爲你在問如何單獨測試你的倉庫。 –
爲了測試AddCouple方法,我需要集中邏輯來添加一個Role。否則,測試存儲庫是沒有意義的,因爲存儲庫將表現爲僞造的存儲庫並且生產將具有另一個存儲庫。 **請參閱以下代碼:** 'var role =(from r in _db.Roles where r.Name ==「Couple」 select r)。 SingleOrDefault(); couple.Roles.Add(role);' – ridermansb