2008-11-15 5 views
12

ASP.NET 응용 프로그램에서 여러 가지 사용자 권한을 테스트했습니다. 이 권한 값은 열거에서 참조되는 그래서 내가 할 수있는 편리한 시험과 같이 권한 :코드의 열거 형 값과 데이터베이스의 해당 값 사이의 종속성을 피하는 방법은 무엇입니까?

  • btnCreate.Enabled = PermissionManager.TestPermission (Permission.AllowCreate);

그러나 나는 그들의 ID 이외에 그들에 대한 정보가 더 필요하기 때문에 이러한 권한을 데이터베이스에 저장했습니다. 그러나 이것은 열거 형 값과 데이터베이스에있는 값 사이에 끔찍한 종속성을 만들어 내며, 응용 프로그램 전반에 걸쳐 문제가 있습니다. 이 문제를 해결할 더 좋은 방법이 있습니까? 전에 누구도이 문제를 다루었습니까?

답변

1

나는 최선의 해결책이 무엇인지 모르겠다. 나는 그것을 듣고 싶다. 우리의 솔루션은 명시 적으로

public enum MyEnum : int 
{ 
    None =0, 
    Value = 1, 
    AnotherValue =2 
} 

같은 열거를 입력하고 데이터베이스에 정수 값을 저장하는 것입니다. 예를 들어 값 1이 제거되면 열거 형을 계속 사용할 수 있고 AnotherValue는 여전히 데이터베이스에 값 2를 갖습니다.

+0

그게 내가 할뿐만 아니라, 코드 또는 데이터베이스에 저장된 정수가 다른 정수를 업데이트하지 않고 변경되면 여전히 문제가 있습니다. –

1

또는 DB에 enumvalues를 문자열로 저장할 수도 있습니다. ToString();

0

데이터베이스에서 열거 형 코드 (예 : NorthwindEnums.cs)를 생성하는 작은 응용 프로그램을 사용합니다. 데이터베이스가 변경 될 때마다 해당 라이브러리를 실행하고 영향을받는 라이브러리를 업데이트해야합니다.

또한 C#의 웹 서비스 참조 관련 문제를 피하기 위해 열거 형을 0에서 순차적으로 유지하려고합니다.

1

열거 형 값을 사용하면 이 아닌 한 이미 할당 된 값을 변경할 수 있습니다. .NET에서 표준 역할 기반 권한을 사용하는 경우 데이터베이스의 해당 역할 테이블에있는 특정 텍스트 문자열이 여전히 존재합니다.

0

나는 데이터베이스에서 테이블과의 "동기화"를 허용하기 위해 열거 형 필드의 특성을 사용하는 회사에서이 작업을 수행하는 작은 도구를 만들었습니다.

이 도구는 어셈블리를 검색하고 코드에서 열거 형 정의와 데이터베이스를 동기화하는 적절한 INSERT/UPDATE SQL 명령을 생성 할 수 있습니다.

0

코드에서 열거 형으로 액세스해야하는 모든 테이블에 확장 속성을 추가합니다. 그런 다음 코드 생성 소프트웨어 (codesmith, T4, 뭐든간에)를 사용하여이 속성이있는 테이블을 찾아 내 모든 열거 형을 생성합니다. 이에 대해 사용될 테이블은 몇 가지 기본 규칙 (Name 열 등이 있어야 함)을 준수하므로 코드 생성기는 열의 요소에 대한 이름으로 사용할 열을 알고 있습니다.

일단 값이 테이블에 추가되면 빌드를 손상시키지 않도록 값을 변경하지 않도록주의해야합니다.