2014-11-25 4 views
0

내 프로젝트는 그들 각자가 자신의 실체를 가지고 내가
을 (= 그 지역 plugins를 호출 할 수 있습니다) ... 모든 것을 그 지역에서 분리를 유지하기 위해 노력하고있는 Areas의 커플이있다 DbContextDbSet DbContext 클래스의 외부

public class PortalDbContext : DbContext, IUnitOfWork 
{ 
    public new IDbSet<TEntity> Set<TEntity>() where TEntity : class 
    { 
     return base.Set<TEntity>(); 
    } 
} 

IUnitOfWork

public interface IUnitOfWork 
    { 
     int SaveChanges(); 
     IDbSet<TEntity> Set<TEntity>() where TEntity : class; 
    } 

Service.cs

public class PageService : IPage 
{ 
    public readonly IUnitOfWork _uow; 
    public readonly IDbSet<Pages> _page; 

    public PageService(IUnitOfWork uow) 
    { 
     _uow = uow; 
     _page = uow.Set<Pages>(); 
    } 
} 

마지막으로 나는을 때 : The entity type Pages is not part of the model for the current context
uow.Set<Pages>();가 제대로 작동하지 않습니다 의미

public void AddPage(PageModel m) 
{ 
    _page.Add(m); 
} 

나는이 오류가 발생합니다.
DbContextDbSet이 가능한가요? ASP.Net MVC 코드는 처음입니까?

+0

컨텍스트에 실제 구체적인'DbSet '속성이 있어야합니다. 그렇지 않으면 엔티티를 데이터베이스에 매핑하는 방법을 알 수 없습니다. 당신의'IUnitOfWork' 인터페이스는 실제로 나에게별로 의미가 없습니다. 목적은 무엇입니까? –

+0

너무 나쁘다면, 당신은 간단한 플러그 형 아키텍처를 원한다는 것을 알고 있습니다. 이 경우 각 플러그인에 대한 DbContext를 변경해야합니다. 'IUnitOfWork'는'context.SaveChanges()'와'context.Set ();' – mhesabi

답변

0

실제로,이 유형 PageModelPortalDbContext 콘텍스트 인스턴스 엔티티 유형으로 구성되지 않았 음이 오류 메시지

The entity type Pages is not part of the model for the current context

수단. 모델을 빌드 (this 페이지, "유형 검색"단락 참조)하거나 fluent API을 사용하여 수동으로 모델을 빌드하는 규칙을 따라야합니다.

두 번째 시나리오는 사용자 정의 알고리즘을 사용하여 모델 유형을 검색하고 DbModelBuilder 메서드를 "어셈블리"모델로 호출 할 수 있기 때문에 플러그인 기반 응용 프로그램의 동적 모델에 적합합니다. 한마디로

is it possible to DbSet out of DbContext class is ASP.Net MVC code first?

, 당신은 DbContext없이 DbSet<TEntity>을 사용할 수 없습니다.
DbSet을 컨텍스트의 일부로 간주하십시오 (AFAIK, DbSetDbSet을 만드는 데 사용 된 DbContext에 대한 참조를 보유합니다).

ASP .NET은 모두 상태 비 저장에 관한 것이므로 DbContext 인스턴스 (또는 작업 단위 래퍼)를 만들고, 작업을 수행하고, 컨텍스트를 처리하고, 버려두는 것이 일반적인 방법입니다. DbContext/DbSet에 대한 참조를 웹 응용 프로그램의 상태로 유지하는 것은 최소한 쓸모가 없습니다.

+0

을 사용합니다. dbset없이 dbcontext를 가지고 dbcontext를 초기화 할 수 있습니까? – ManirajSS

+0

@ManirajSS : "DbSet '속성 없음"을 의미하는 경우 그렇습니다. 하지만이 컨텍스트를 사용하려면'OnModelCreating'을 오버라이드하고 내부에 모델을 빌드해야합니다. – Dennis

+0

고맙습니다.하지만'OnModelCreating'에 대해 알고 있습니다. 테이블이 없어도 데이터베이스가 필요합니다 (dbset이없고 onmodelcreating이 아님) – ManirajSS