I’m generating POCOs from my db via EF Power Tools and am ready to start tweaking and extending them.
This Q/A gets me past the initial question (how to add partials) but I wonder if the provided answer will have changed for MVC4 projects.
But that answer pertains specifically to validation. I also need to tweak the generated constructors – similar to this question. My db schema the utility constructs my user object like so:
public User()
{
this.Addresses = new List<Address>();
this.Emails = new List<Email>();
this.Institutions = new List<Institution>();
this.Orders = new List<Order>();
this.Phones = new List<Phone>();
}
With the exception of Institutions, these would all be correct. A user can have many phones, emails and so on. But can only belong to one Institution.
I would presume there’s no way to re-wire this constructor such that a List of Institution is not created. So I’d create a method that adds a ‘Institution’ (singular) property and assign Institutions.SingleOrDefault and perhaps some flagging/handling on .Count>1?
So a constructor on my partial class would behavior the same as on the generated class? It runs on a new up?
thx
To follow-up re: the FKs that are behind the code gen. My Institution can have many users and keys back to the primary contact based on ‘PrimaryContact’ via the Users identity field.
Institution:
CONSTRAINT [FK_Institutions_Users] FOREIGN KEY ([idPrimaryContact]) REFERENCES [dbo].[Users] ([ID])
User:
CONSTRAINT [FK_Users_Institutions] FOREIGN KEY ([idUserInstitution]) REFERENCES [dbo].[Institutions] ([ID])
The EF power tools is creating this relationship, because the database allows a User to have multiple institutions. I assume this is because there is a FK of UserId on your Institution table. If this is truly a 1:1 or 1:0.1 relationship, maybe you should change the database so that the User table has a FK to the Institution table instead (nullable if it’s optional).
If this is not an option then there are some other ways to do this:
Are you needing to be able to do this in a templated fashion or on just this single entity?
If you’re needing to do this repeatedly, you might want to try altering the TT files that generate the entity objects. Rowan Miller had an excellent post about this.
Either way, you could modify your item like this:
Then just bind to the Institution property you created.