코드 우선 엔티티 프레임 워크에서 뷰를 사용하는 방법 [닫힌]
먼저 엔티티 프레임 워크 코드에서 데이터베이스보기를 사용하려면 어떻게해야합니까?
저처럼 다른 데이터베이스 (제 경우에는 erp)에서 가져온 엔터티를 매핑하여 응용 프로그램의 특정 엔터티와 연결하는 데만 관심이 있다면 테이블을 사용할 때 뷰를 사용할 수 있습니다. 같은 방식으로!). 분명히 해당 엔티티를 업데이트하려고하면 뷰를 업데이트 할 수없는 경우 예외가 발생합니다. 절차는 일반 (테이블 기반) 엔티티의 경우와 동일합니다.
- 보기에 대한 POCO 클래스를 만듭니다. 예를 들어 FooView
- DbContext 클래스에 DbSet 속성 추가
FooViewConfiguration 파일을 사용하여 뷰에 다른 이름을 설정하거나 (생성자에서 ToTable ( "Foo"); 사용) 특정 속성을 설정합니다.
public class FooViewConfiguration : EntityTypeConfiguration<FooView> { public FooViewConfiguration() { this.HasKey(t => t.Id); this.ToTable("myView"); } }
FooViewConfiguration 파일을 modelBuilder에 추가합니다. 예를 들어 Context의 OnModelCreating 메소드를 ovveriding합니다.
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new FooViewConfiguration ()); }
이것은 업데이트 일 수 있지만 EF 코드로 뷰를 사용하려면 먼저 [Table ( "NameOfView")]를 클래스 맨 위에 추가하기 만하면 다른 모든 사용자가 겪고있는 모든 작업을 거치지 않고도 모두 제대로 작동합니다. 또한 열 중 하나를 [키] 열로보고해야합니다. 다음은이를 구현하는 샘플 코드입니다.
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SomeProject.Data
{
[Table("SomeView")]
public class SomeView
{
[Key]
public int NameID { get; set; }
public string Name { get; set; }
}
}
그리고 컨텍스트는 다음과 같습니다.
using System.Data.Entity;
namespace SomeProject.Data
{
public class DatabaseContext : DbContext
{
public DbSet<SomeView> SomeViews { get; set; }
}
}
원하는 것이 비정규 화 된 객체 다발이면 클래스 IQueryable<TDenormolized>
에 공개 get 전용 속성을 만들 수 있습니다 DbContext
.
에서 get
Linq 결과를 반환하여 비정규 화 된 값을 비정규 화 된 객체에 투영합니다. 프로그래밍 중이므로 select
명령문을 사용하는 것만으로 제한되지 않으므로 DB View를 작성하는 것보다 낫습니다 . 또한 컴파일 시간 유형이 안전합니다.
ToList()
지연된 쿼리를 깨뜨릴 수있는 호출 과 같은 열거를 트리거하지 않도록주의 하십시오. 그러면 데이터베이스에서 백만 개의 레코드를 다시 가져와 애플리케이션 서버에서 필터링 할 수 있습니다.
이것이 올바른 방법인지는 모르겠지만 시도해 보았고 효과가 있습니다.
나는 이것이 오래된 질문이며 여기에 많은 답변이 있음을 알고 있지만 이 답변을 사용할 때 문제 가 발생했으며 패키지 관리자 콘솔에서 update-database 명령을 사용할 때 오류가 발생했습니다.
There is already an object named '...' in the database.
and I use these steps to solve this issue:
- run this command in Package Manager Console:Add-migration intial
- Under the Migrations folder, you can find ..._intial.cs file, open it and comment or delete any command related to your class you want to map
- now you can normally use update-database command for any other change to your models
hope it helps.
참고URL : https://stackoverflow.com/questions/7461265/how-to-use-views-in-code-first-entity-framework
'Development Tip' 카테고리의 다른 글
반짝이는 서버없이 자체 반짝이는 앱 호스팅 및 설정 (0) | 2020.10.05 |
---|---|
.NET에는 기본 제공 EventArgs가 있습니까? (0) | 2020.10.05 |
대규모 Node.js 프로젝트를 구성하는 방법 (0) | 2020.10.05 |
스칼라 커링과 부분적으로 적용된 함수 (0) | 2020.10.05 |
AutoCompleteTextView를 사용하고 웹 API의 데이터로 채우려면 어떻게합니까? (0) | 2020.10.05 |