Click here to Skip to main content
15,065,044 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more: , +
Hi,

Could somebody help me please, I'm not understanding the repository pattern very well!

I have a model whereby I have a Person entity with a one-to-one link with a PersonProfile Entity.

So I have my two entities:
public class person
{
    public int PersonId {get;set;}
    public string Name {get;set;}
    ....
    public int PersonProfileId {get;set;}
    public virtual PersonProfile PersonProfile {get;set;}
}

public class PersonProfile
{
    public int PersonProfileId {get;set;}
    ....
}


I have a repository for Person and a service for creating the person.
Now I need to make sure that whenever a Person is create a Personprofile is also created and linked (with blank data in it). The idea being prevent me having to check further down the line that the records exist before I try to update or display them.

But how would be best to do it? Create a personprofile repository and send through a reference when I call the create person service? Do it from my controller page and make sure it's all hooked up before I pass the object to the person create service?

i.e.

personprofile profile = new person profile();
personprofileservice.create(profile);
personprofileservice.save();

person person = new person();
person.personprofile = profile;
personservice.create(person);
personservcice.save();


Or is there a better way I'm not just not understandng?

Thanks in advance.
Posted
Comments
S@53K^S 16-Apr-12 14:33pm
   
Repository pattern is used to save all the actions related to a particular class here person for example.So if you are actually trying to say Person.CreatePerson(),it means you are not creating a new person,but you are telling the system that a new person profile has come in.So i guess the PersonProfile is not different from person.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900