Monday, 15 April 2013

c# - Should model also serve as a repository? -



c# - Should model also serve as a repository? -

i wonder if it's right utilize model repository. reason much simpler , create much more sense in scenarios. i'm not sure if best way things maybe can point out if i'm going right direction.

example

you have account, every account have sessions , projects. wouldn't much more sensible acc.addproject("new project") , acc.deleteprojectbyid(3) instead of pulling repositories in controller , wasting codespace?

this have far, wonder if i'm going right direction here.

public class business relationship { public objectid id { get; set; } public string email { get; set; } public string passwordhash { get; set; } public string passwordsalt { get; set; } public iqueryable<project> projects { { var kernel = ninjectwebcommon.bootstrapper.kernel; var projectrepository = kernel.get<iprojectrepository>(); homecoming projectrepository.getbyaccountid(id); } } public iqueryable<accountsession> sessions { { var kernel = ninjectwebcommon.bootstrapper.kernel; var sessionrepository = kernel.get<iaccountsessionrepository>(); homecoming sessionrepository.getbyaccountid(id); } } public project addproject(string name, string description) { var kernel = ninjectwebcommon.bootstrapper.kernel; var projectrepository = kernel.get<iprojectrepository>(); homecoming projectrepository.add(name, description, id.tostring()); } public accountsession addsession(string ip, string hash, string salt) { var kernel = ninjectwebcommon.bootstrapper.kernel; var sessionrepository = kernel.get<accountsessionrepository>(); homecoming sessionrepository.add(id.tostring(), ip, hash, salt); } }

what you're talking seems mix of 2 approaches.

firstly, having sorts of methods on model akin active record pattern. pattern means each object has crud operations.

however sounds want design evolves domain driven design, whereby objects contain of required logic (as opposed hexagonal construction "service" classes).

ddd not state persistence part of model - logic is. still leave persistence in dedicated repository, of logic sit down in models. repositories update models is. thought there code becomes much more expressive inner workings of domain (which you're going code example).

c# model-view-controller coding-style standards

No comments:

Post a Comment