Database-First 방식으로 MS SQL View도 객체화해서 가져오는 방법
안녕하세요^^
혹시 Database-First 방식으로 MS SQL View도 객체화해서 자동으로 모델 엔티티 형식으로 가져올수 있는 방법이 있을까요?
답변 3
0
vyrudaks님, 반갑습니다.
물론, 가져올 수 있는 방법이 있습니다.
⭐ 간단히 말씀드리면, .Net Core 3.x부터 지원되는 HasNoKey와 ToView 메서드를 사용하면 가능합니다.
강의에서 진행했던 NetCore 솔루션과 관련해 말씀드리겠습니다. (스압에 주의하세요.)
(1) 먼저, NetCore.Data 프로젝트의 Classes 폴더에 uvwUserEmail 클래스를 생성하세요.
public class uvwUserEmail {
public string UserId { get; set; }
public string UserEmail { get; set; }
}
(2)-1. 그 다음에, NetCore.Services 프로젝트의 Data 폴더에 있는 DBFirstDbContext의 OnModelCreating 메서드에 다음 내용을 추가하세요.
modelBuilder.Entity<uvwUserEmail >().HasNoKey();
modelBuilder.Entity<uvwUserEmail >().ToView(name: "uvwUserEmail ");
Db View는 Primary Key가 없기 때문에 HasNoKey 메서드를 지정하고, ToView 메서드를 통해 뷰이름을 정하면서 uvwUserEmail이 뷰로 사용될 클래스라는 것을 알려주는 용도입니다.
(2)-2. 그런데, 현재 NetCore.Services 프로젝트가 .Net Core 2.1버전이기 때문에 Project File을 열어서 TargetFramework를 netcoreapp2.1에서 netcoreapp3.1로 변경하세요.
(2)-3. 또한, PackageReference도 Microsoft.EntityFrameworkCore와 Microsoft.EntityFrameworkCore.SqlServer에 대해 각각 3.1.11 버전으로 업그레이드해 주세요.
(HasNoKey와 ToView 메서드가 3.x 버전에서 추가된 메서드이기 때문에 이러한 작업들이 필요합니다.)
(2)-4. DBFirstDbContext 내부에 다음의 변수도 추가해 주세요.
public virtual DbSet<uvwUserEmail> UserEmails { get; set; }
(3) SQL Server Management Studio를 열어서 DBFirstDB 데이터베이스에 다음과 같이 dbo.uvwUserEmail 뷰를 생성합니다.
CREATE VIEW dbo.uvwUserEmail
AS
SELECT UserId, UserEmail
FROM dbo.[User]
GO
(4) 이제, 마지막으로 UserService 클래스에 아래의 메서드를 추가한 후에 테스트해 주세요.
public List<uvwUserEmail> GetUserEmails() {
return _context.UserEmails.FromSqlRaw("SELECT UserId, UserEmail FROM dbo.uvwUserEmail")
.ToList();
}
이렇게 한 후에 GetUserEmails() 메서드를 호출해서 사용하시면 됩니다.
이상입니다.
즐거운 하루되세요.
DB Azure 활용 방법 문의 & UI 구성
0
121
1
Email Unique Index 지정 update 오류
0
147
2
03 보고 있는데 VS2022로 뭘 어째야 하는건지 감이 안와요... 인터페이스가 너무 달라요
0
323
1
ADO.NET 엔터티 데이터 모델이 없어요
0
617
1
두번째 강의 의존성주입에서 startup 클래스가 없습니다.
0
701
2
Login 뷰에서 MembershipController연결 방식문의
0
370
1
14일만에 배우는 ASP.NET CORE 질문
1
411
1
안녕하세요 강사님.
0
375
2
안녕하세요.
0
355
1
질문이 있습니다.
0
331
1
AccessFailedCount 추가 시 NULL값 문제
0
424
1
마이그레이션 완료 후 Update DB 에서 에러가 납니다 ㅠ
0
859
2
시작페이지 바꿀수있을까요?
0
254
1
강사님 레이아웃이 없습니다.
0
334
1
.NET 5.0 FromSql 질문
0
322
1
질문있어요 . 마지막에 나오는 파일xml
0
232
2
Add-Migration ~~ 사용시 add-migration : 'add-migration'이라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다.
1
1466
3
2019 비주얼스튜디오 쓰고있습니다. 아무리 찾아봐도 c# 기반 mvc가 없습니다.
0
284
1
03. MVC패턴 강의 질문입니다.
0
345
1
세션1 뷰 생성에서 막히고 있습니다..
0
309
1
로그아웃 후 브라우저 뒤로가기 버튼 클릭시 이전 페이지 접속 안되게 하는 방법
0
1291
1
하위 도메인 쿠키 공유 관련
0
975
2
DbContext를 찾을 수 없습니다.
0
308
1
Model Validation에 관해
0
269
2





