마이그레이션을 사용하여 먼저 EF 5.0 코드에 데이터베이스 뷰 매핑

Corey Adler

EF 5.0 Code First w / Migrations의 엔터티에 SQL 뷰를 매핑하여 해당 정보에 대해 여러 테이블을 쿼리 할 필요없이 페이지에 몇 가지 기본 정보를 표시하려고합니다 (현재로드하는 데 20 초 정도 걸립니다. 좋지 않습니다. ). 할 수 있다고 들었지만 온라인에서 제대로 할 수있는 방법을 알아 내거나 찾을 수 없었습니다.

편집 :이 문제에 대한 내 솔루션에 대한 자세한 내용을 보려면 주제에 대한 이 블로그 게시물읽으십시오 .

내 견해는 다음과 같습니다.

CREATE VIEW [dbo].[ClientStatistics]
AS
SELECT       ROW_NUMBER() OVER (Order By c.ID) as Row, c.LegacyID, c.ID, c.ClientName, slc.AccountManager, slc.Network,
                             (SELECT        MAX(CreatedDate) AS Expr1
                               FROM            dbo.DataPeriods
                               WHERE        (ClientID = c.ID)) AS LastDataReceived,
                             (SELECT        MAX(ApprovedDate) AS Expr1
                               FROM            dbo.DataPeriods AS DataPeriods_2
                               WHERE        (ClientID = c.ID)) AS LastApproved,
                             (SELECT        MAX(ReportProcessedDate) AS Expr1
                               FROM            dbo.DataPeriods AS DataPeriods_1
                               WHERE        (ClientID = c.ID)) AS LastReportProcesssed
FROM            dbo.Clients AS c INNER JOIN
                         dbo.SLClients AS slc ON c.ID = slc.ClientID

다음은 엔티티입니다.

public class ClientStatisticsView
{
    [Key]
    public int Row { get; set; }
    public int LegacyID { get; set; }
    public int ClientID { get; set; }
    public string ClientName { get; set; }
    public string AccountManager { get; set; }
    public string Network { get; set; }
    public DateTime LastDataReceived { get; set; }
    public DateTime LastApproved { get; set; }
    public DateTime LastReportProcessed { get; set; }
}

그리고 마지막으로 내 매핑 DbContext:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

    modelBuilder.Entity<ClientStatisticsView>().ToTable("ClientStatistics");

    base.OnModelCreating(modelBuilder);
}

이 모든 것이 다음과 같은 오류를 발생시킵니다.

There is already an object named 'ClientStatistics' in the database.

내가 무엇을 잘못하고 있지? 이 작업을 수행 할 수있는 방법이 있습니까? 아니면 대신 다른 작업을해야합니까?

콜린

ClientStatisticsView엔티티가 "ClientStatistics"라는 테이블에 매핑되도록 지정했습니다 . 따라서 엔터티 프레임 워크는 해당 테이블을 만드는 지침이 포함 된 마이그레이션을 생성합니다. 그러나 데이터베이스에서 해당 뷰를 독립적으로 만들었으므로 오류를 방지 CreateTable하려면 Up마이그레이션 에서 지침을 제거해야 합니다.

더 나은 방법은 다음과 같이 sql을 실행하여 마이그레이션에서 뷰를 만드는 것입니다.

public override void Up()
{
    Sql("EXEC ('CREATE View [dbo].[ClientStatistics] AS --etc"
}

public override void Down()
{

    Sql(@"IF  EXISTS (SELECT
                        *
                    FROM sys.views
                    WHERE object_id = OBJECT_ID(N'dbo.ClientStatistics'))
                    DROP VIEW dbo.ClientStatistics)")
}

이렇게하면 뷰와 테이블이 한 곳에서 지정되고 안전하게 위아래로 마이그레이션 할 수 있습니다.

참고

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

EF를 사용하여 MVC 4의 여러 뷰에서 여러 데이터베이스 레코드를 저장하는 방법은 무엇입니까?

분류에서Dev

기존 데이터베이스 코드에 먼저 테이블 추가 MVC 5 EF6

분류에서Dev

Cakephp3을 사용하여 마이그레이션으로 데이터베이스에 뷰 생성

분류에서Dev

Icollectable을 데이터베이스 코드에 먼저 시드하는 방법

분류에서Dev

먼저 ASP.Net MVC EF6 데이터베이스에서 VB.Net 사용

분류에서Dev

여러 마이그레이션 병합 Entity Framework 코드 먼저

분류에서Dev

"기존 데이터베이스에서 먼저 코드화"된 EF 엔티티 업데이트

분류에서Dev

OnModelCreating (MVC 5 EF 코드 먼저)을 사용해야하는 이유는 무엇입니까?

분류에서Dev

기존 데이터베이스를 EF에 매핑하는 데이터 유형 불일치

분류에서Dev

EF-코드 우선 마이그레이션 : 요청을 처리하는 동안 데이터베이스 작업이 실패했습니다.

분류에서Dev

{문자가 EF Core의 ExecuteSqlRaw를 사용하여 데이터베이스에 저장하도록 허용

분류에서Dev

먼저 코드에서 마이그레이션을 사용하여 계산 된 열을 추가하는 방법은 무엇입니까?

분류에서Dev

Firebase 데이터베이스에 사용자 UID를 저장하고 POJO에 매핑하는 방법

분류에서Dev

먼저 코드를 사용하여 다 대다 관계 데이터베이스 테이블에 데이터를 추가 할 수 없음

분류에서Dev

먼저 EF 핵심 코드로 매핑이 없으면 오류가 발생합니다.

분류에서Dev

열 매핑이있는 Python을 사용하여 XML 파일을 MySQL 데이터베이스에로드

분류에서Dev

먼저 Entity Framework 코드와 함께 업데이트 가능한 뷰 사용

분류에서Dev

다른 스키마에서 동일한 테이블을 가진 엔터티 매핑 Entity Framework 6 코드 먼저

분류에서Dev

Entity Framework를 사용하여 데이터베이스에 저장할 때 "지정된 구성원 매핑이 유효하지 않습니다."오류

분류에서Dev

EF 데이터베이스 먼저 데이터베이스 변경을 위해 모델을 업데이트하는 방법은 무엇입니까?

분류에서Dev

작업 메서드를 뷰에 매핑하는 메타 데이터가 저장되는 위치

분류에서Dev

EF 5에서 탐색 속성 정의, 코드 우선 마이그레이션

분류에서Dev

장고 뷰를 사용하여 데이터베이스에 데이터를 저장하려면 어떻게해야합니까?

분류에서Dev

Fluent 매핑으로 Ef 코드를 먼저 리버스 엔지니어링

분류에서Dev

Laravel 5를 사용하여 이전 테이블에서 새 테이블로 데이터 마이그레이션

분류에서Dev

angularjs, PHP, mysql을 통해 ngclick을 사용하여 데이터베이스에 매개 변수 저장

분류에서Dev

EF Core + Code First + 마이그레이션을 사용한 데이터베이스 생성

분류에서Dev

Auth0 테넌트에서 자동 마이그레이션을 사용하여 사용자 지정 데이터베이스의 사용자에 대해 확인 된 이메일 상태를 포함하는 방법은 무엇입니까?

분류에서Dev

Microsoft Azure : 사용자 추가 및 데이터베이스에 매핑 + 데이터베이스 역할 추가

Related 관련 기사

  1. 1

    EF를 사용하여 MVC 4의 여러 뷰에서 여러 데이터베이스 레코드를 저장하는 방법은 무엇입니까?

  2. 2

    기존 데이터베이스 코드에 먼저 테이블 추가 MVC 5 EF6

  3. 3

    Cakephp3을 사용하여 마이그레이션으로 데이터베이스에 뷰 생성

  4. 4

    Icollectable을 데이터베이스 코드에 먼저 시드하는 방법

  5. 5

    먼저 ASP.Net MVC EF6 데이터베이스에서 VB.Net 사용

  6. 6

    여러 마이그레이션 병합 Entity Framework 코드 먼저

  7. 7

    "기존 데이터베이스에서 먼저 코드화"된 EF 엔티티 업데이트

  8. 8

    OnModelCreating (MVC 5 EF 코드 먼저)을 사용해야하는 이유는 무엇입니까?

  9. 9

    기존 데이터베이스를 EF에 매핑하는 데이터 유형 불일치

  10. 10

    EF-코드 우선 마이그레이션 : 요청을 처리하는 동안 데이터베이스 작업이 실패했습니다.

  11. 11

    {문자가 EF Core의 ExecuteSqlRaw를 사용하여 데이터베이스에 저장하도록 허용

  12. 12

    먼저 코드에서 마이그레이션을 사용하여 계산 된 열을 추가하는 방법은 무엇입니까?

  13. 13

    Firebase 데이터베이스에 사용자 UID를 저장하고 POJO에 매핑하는 방법

  14. 14

    먼저 코드를 사용하여 다 대다 관계 데이터베이스 테이블에 데이터를 추가 할 수 없음

  15. 15

    먼저 EF 핵심 코드로 매핑이 없으면 오류가 발생합니다.

  16. 16

    열 매핑이있는 Python을 사용하여 XML 파일을 MySQL 데이터베이스에로드

  17. 17

    먼저 Entity Framework 코드와 함께 업데이트 가능한 뷰 사용

  18. 18

    다른 스키마에서 동일한 테이블을 가진 엔터티 매핑 Entity Framework 6 코드 먼저

  19. 19

    Entity Framework를 사용하여 데이터베이스에 저장할 때 "지정된 구성원 매핑이 유효하지 않습니다."오류

  20. 20

    EF 데이터베이스 먼저 데이터베이스 변경을 위해 모델을 업데이트하는 방법은 무엇입니까?

  21. 21

    작업 메서드를 뷰에 매핑하는 메타 데이터가 저장되는 위치

  22. 22

    EF 5에서 탐색 속성 정의, 코드 우선 마이그레이션

  23. 23

    장고 뷰를 사용하여 데이터베이스에 데이터를 저장하려면 어떻게해야합니까?

  24. 24

    Fluent 매핑으로 Ef 코드를 먼저 리버스 엔지니어링

  25. 25

    Laravel 5를 사용하여 이전 테이블에서 새 테이블로 데이터 마이그레이션

  26. 26

    angularjs, PHP, mysql을 통해 ngclick을 사용하여 데이터베이스에 매개 변수 저장

  27. 27

    EF Core + Code First + 마이그레이션을 사용한 데이터베이스 생성

  28. 28

    Auth0 테넌트에서 자동 마이그레이션을 사용하여 사용자 지정 데이터베이스의 사용자에 대해 확인 된 이메일 상태를 포함하는 방법은 무엇입니까?

  29. 29

    Microsoft Azure : 사용자 추가 및 데이터베이스에 매핑 + 데이터베이스 역할 추가

뜨겁다태그

보관