Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using an SQL View from an Entity Framework Code First version 5

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:

  1. Can I use the SQL view directly to display a summary on a web page (perhaps by reading it into a class)
  2. Can I create a code first object equivalent to the SQL view.
like image 216
Peter Smith Avatar asked Sep 03 '13 15:09

Peter Smith


1 Answers

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:

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

public namespace whatever.mynamespace

    [Table("dbo.ContactLogSummaries")] //<-- this is your view
    public class ContactLogSummary
    {
        ...
    }
}
like image 67
Brandon Avatar answered Nov 03 '22 01:11

Brandon