When are SQL views appropriate in ASP.net MVC?
- by sslepian
I've got a table called Protocol, a table called Eligibility, and a Protocol_Eligibilty table that maps the two together (a many to many relationship). If I wanted to make a perfect copy of an entry in the Protocol table, and create all the needed mappings in the Protocol_Eligibility table, would using an SQL view be helpful, from a performance standpoint? Protocol will have around 1000 rows, Eligibility will have about 200, and I expect each Protocol to map to about 10 Eligibility rows and each Eligibility to map to over 100 rows in Protocol.
Here's how I'm doing this with the view:
var pel_original = (from pel in _documentDataModel.Protocol_Eligibility_View
                                where pel.pid == id
                                select pel);
Protocol_Eligibility newEligibility;
foreach (var pel_item in pel_original)
{
    newEligibility = new Protocol_Eligibility();
    newEligibility.Eligibility = (from pel in _documentDataModel.Eligibility
                                              where pel.ID == pel_item.eid
                                              select pel).First();
    newEligibility.Protocol = newProtocol;
    newEligibility.ordering = pel_item.ordering;
    _documentDataModel.AddToProtocol_Eligibility(newEligibility);
}
And this is without the view:
var pel_original = (from pel in _documentDataModel.Protocol_Eligibility
                                where pel.Protocol.ID == id
                                select pel);
Protocol_Eligibility newEligibility;
foreach (var pel_item in pel_original)
{
    pel_item.EligibilityReference.Load();
    newEligibility = new Protocol_Eligibility();
    newEligibility.Eligibility = pel_item.Eligibility;
    newEligibility.Protocol = newProtocol;
    newEligibility.ordering = pel_item.ordering;
    _documentDataModel.AddToProtocol_Eligibility(newEligibility);
}