EF 쿼리에서 열거 형을 사용할 수 있기를 바랍니다. ExpressionVisitor를 내 저장소에 추가하여 들어오는 조건/사양 기준을 사용하고 해당 지속 된 int 속성을 사용하도록 다시 작성하는 것을 고려하고 있습니다.쿼리 표현식을 다시 작성하여 열거 형을 int로 바꾸십시오.
public class User : IEntity
{
public long ID { get; set; }
internal int MemberStatusValue { get; set; }
public MemberStatus MemberStatus
{
get { return (MemberStatus) MemberStatusValue; }
set { MemberStatusValue = (int) value; }
}
}
을 그리고 사용하여 데이터베이스에 다음이지도 :
나는 일관되게 내 (코드 첫 번째) 기관에 다음과 같은 가치 접미사 패턴을 사용하고 있습니다에서
internal class UserMapping : AbstractMappingProvider<User>
{
public override void DefineModel(DbModelBuilder modelBuilder)
{
// adds ToTable and other general mappings
base.DefineModel(modelBuilder);
Map.Property(e => e.MemberStatusValue).HasColumnName("MemberStatus");
}
}
을 내
public IQueryable<T> Query(Expression<Func<T, bool>> filter, params string[] children)
{
if(children == null || children.Length == 0)
{
return Objects.Where(filter);
}
DbQuery<T> query = children.Aggregate<string, DbQuery<T>>(Objects, (current, child) => current.Include(child));
return filter != null ? query.Where(filter) : query;
}
내가이 메타 내부 메서드 호출을 추가하고 싶습니다 : 저장소가 나는 다음과 같은 방법을 필터 식을 다시 작성하여 MemberStatus 속성에 대한 모든 참조를 MemberStatusValue에 대한 참조로 바꿉니다.
나는 in this SO post과 같은 것을 포함하는 해결책이 될 것이라고 생각하지만, 아이디어를 구현하는 방법을 정확히 알지 못합니다.
이 기능을 추가하면 성능에 미치는 영향에 대한 조언을 제공 할 수 있습니다.
것은이 게시물을 살펴 보자 http://bit.ly/eUOi08 – Steven
감사합니다, 정확히 바로 보이는 .. 조사 할 것입니다! –
최신 버전의 EF (June CTP)는 열거 형에 대한 기본 지원을 제공하며 다음 공식 릴리스 (4.2)는 공식 버전으로 설정됩니다 (http://blogs.msdn.com/b/adonet/archive/2011). /06/30/walkthrough-enums-june-ctp.aspx –