2012-02-17 3 views
1

엔티티 프레임 워크와 POCO에 대해 배우고 있으며 많은 컨셉이 마음에 들지만 나는 그 컨셉을 좋아하지 않는다고 생각합니다.엔티티 프레임 워크와 POCO

create table Customer 
{ 
    Id int, 
    Name varchar(32), 
    Value1 varchar(32), 
    Value2 varchar(32), 
    Value3 varchar(32) 
    ... 
    Value50 varchar(32) 
} 

-- ColumnName will map to "Value1", "Value2", etc 
create table ColumnMapping 
{ 
    ColumnName varchar(32), 
    DisplayName varchar(32) 
} 

이 데이터의 모습을 나타내는 개체 :입니다

class Customer 
{ 
    public Id { get; set; } 
    public Name { get; set;} 
    public Dictionary<string, string> CustomData { get; set; } 
} 

, 내가 값 1을지도하고 싶습니다 나는 다음과 같은 스키마를 가지고

예를 들면 다음과 같습니다이다 사전에 Value50으로 (사전의 키는 ColumnMapping 테이블에 의해 결정됨).

나는 이것이 무엇에 가장 좋은 방법인지 궁금합니다.

고객이 POCO가되기를 원하지만이를 수행하기 위해 Value1 .. Value50에 대해 알아야 해당 열을 사전으로 변환 할 수 있습니다. 그러나 POCO가 끈질 기게 지속되어야한다는 점을 감안할 때, 그것이 올바른 접근인지는 의문입니다.

나는 일반적으로 POCO가 실제로 무엇인지에 대해 고민 중이다. 비즈니스 계층에서 사용하는 개체이거나 POCO와 "비즈니스 개체"간의 매핑이 필요하며 "비즈니스 객체"는 비즈니스 계층에서 사용해야하는 것입니다.

이러한 유형의 시나리오를 처리하는 방법에 대한 조언을 보내 주시면 감사하겠습니다. 내가, 내가 가서 내가 결정 무엇을 나타내는 것 물어려고 질문에 대한 답변을받지 못한 것처럼

편집

(경우에 사람이 유사한 문제가 있습니다). POCO는 그것이 어떻게 지속되는지에 대해 알 필요가 없다는 점에서 무지한 반면, 완전히 모르는게 아닙니다. 즉, 어떤 방식 으로든 지속성 계층에 연결되어야합니다.

예를 들어 비즈니스 계층에서 Value1, Value2, Value3 등을 알지는 못하지만 누군가 해당 값을 사전으로 변환하려면 해당 값을 알아야합니다. 나는 그 논리를 넣을 적절한 장소가 POCO라고 믿습니다. 따라서 POCO가 Value1, Value2, Value3 등의 열에 대한 속성을 가져야한다고 생각합니다.

감사합니다, ORM 세계에서 에릭

답변

1

, 이것은 일반적인 방법

class Customer 
{ 
    public int Id { get; set; } 
    public string Name {get; set; } 
    public virtual ICollection<CustomDatum> CustomData { get; set; } 
} 

class CustomDatum 
{ 
    public int Id { get; set; } // PK 
    public string ColomnName { get; set; } 
    public string DisplayName { get; set; } 
} 
+0

감사 레이에게 있습니다. 나는 당신이 다른 스키마를 사용해야한다고 제안한다고 생각한다. 특정 응용 프로그램의 경우이 방법이 더 좋을 수도 있지만 위의 스키마가 필요하다는 가정하에이 질문을 가정 해 보겠습니다. 필자가 언급 한 스키마를 통해 POCO 객체가 어떻게 보이는지, 그리고 비즈니스 레이어에 다른 (그러나 비슷한) 객체가 있는지의 여부가 궁금합니다. – Eric

관련 문제