4

.Net 응용 프로그램을 개발 중이며 사용할 수있는 데이터베이스가 있습니다. 나는 같은 카테고리 클래스가 있습니다.Net을 사용하여 MVC 및 Entity Framework를 사용하여 동적으로 테이블에 데이터베이스 필드를 추가하는 방법은 무엇입니까?

public partial class Category 
{ 
    public int CategoryId {get;set;} 
    public string CategoryName {get;set;} 
} 

어떻게이 모델에 따라서 데이터베이스에 동적 필드를 추가 할 수 있습니까? 가능하지 않다면 내 문제를 해결할 다른 방법이 있습니까?

사용자가 원하는 사용자 정의 필드를 추가하여 추가 할 수 있도록 허용하고 있습니다. 따라서 데이터베이스 스키마는

카테고리 (CategoryId, CategoryName, CustomField1, CustomField2)가됩니다.

EF 5 및 MVC를 사용하여 어떻게 수행 할 수 있습니까? 아니면 우리가 할 수있는 다른 방법이 있습니까?

+1

왜 이러한 CustomFields를 동적으로 추가 할 것인지에 대한 자세한 정보를 제공 할 수 있습니까? 나는이 같은 데이터베이스 필드를 추가하는 것보다 이것을 달성하는 더 좋은 방법이있을 것이라고 생각하고 있습니다. –

+0

기본적으로 런타임에 (어떻게 든) 필드를 추가 한 후 EF 모델을로드 한 전체 관리되는 모듈을 다시 컴파일해야합니다. 그것은 가능할 수도 있지만 완전히 실용적이지 않습니다. – EkoostikMartin

+2

'Custom'이라는 객체 목록과 같은 목록 인 'Category' 클래스에 목록을 추가하고 그 목록에 항목을 추가하는 것이 좋습니다. 그래서 DB에서'Category'와 관련된'CustomFields' 테이블을 가질 것입니다 – Thewads

답변

4

동적으로 데이터베이스에 열을 추가하는 것이 가장 좋은 생각이라고 생각하기 때문에이 제안을 답으로 추가 할 것입니다.

Category 클래스에 다른 유형의 목록을 추가하려면 CustomField으로 전화하십시오. 사용자가 새 필드를 추가 할 수있게하려면이 목록에 막대기를 붙여야합니다.

public partial class Category 
{ 
    public int CategoryId {get;set;} 
    public string CategoryName {get;set;} 
    public IList<CustomField> CustomFields {get;set;} 
} 

public class CustomField 
{ 
    public int CustomFieldId {get;set;} 

    public string FieldName {get;set;} 
    public string FieldValue {get;set;} 

    [ForeignKey("Category")] 
    public int CategoryId {get;set;} 
    public Category Category {get;set;} 
} 
관련 문제