I am developing a contact log in a website using VS 2010, MVC3 and EF 5 - the entities are created using code first. The data is stored in an SQL Server 2008 R2 set of databases. I want to display a summary of the contact log and have created a view.
CREATE VIEW dbo.ContactLogSummaries
AS
SELECT
CLE.ContactLogEntryID,
CLE.CaseID,
'Test' AS ContactName,
EU.UserName As OfficeUser,
CLE.DateAndTimeOfContact,
CLC.Category,
CLE.ContactDetails
FROM
ContactLogEntries AS CLE
JOIN
ContactLogCategories AS CLC
ON CLE.ContactLogCategoryID = CLC.ContactLogCategoryID
JOIN
Control.dbo.EndUsers AS EU
ON CLE.UserID = EU.EnduserID
There are two entities in the Contact Log database (ContactLogEntries
and ContactLogCategories
) and a database first entity Control.dbo.EndUsers
in another database. The contact log could contain a large number of records. I want to be able to display just the records for a specific case.
My question is in two parts:
- Can I use the SQL view directly to display a summary on a web page (perhaps by reading it into a class)
- Can I create a code first object equivalent to the SQL view.
Found a simple solution to question 1:
It does all that's required so, although I'm interest in an answer to question 2 I have a working solution.
You can just map the Entity directly to the view using TableAttribute (data annoations), or ToTable in your Fluent Mappings...
For example using data annotions: