私の質問は次のとおりです。C#コードでドメインテーブルのデータベースレジストリを参照するには?
データベースにはユーザーのルールを追加するドメインテーブルがあります。
このような何か:
テーブルUserRoles:
idRule cRuleDescription bRuleIsActive
1 Edit client true
2 Delete client false
私のC#アプリケーションは、このように、列挙を使用して、このテーブルを参照:
public enum UserRoles: int
{
CanEditClient = 1,
CanDeleteClient = 2,
CanChangeClientName = 3,
//More code
}
そして、私はそのクエリC#のメソッドを使用しますログされたユーザーに何らかのアクションが許可されているかどうかを知るために、Idでデータベースを更新します。このようなもの:
bool HasPermissionToEdit = Rules.UserHasPermisson(UserName, UserRoles.CanEditClient)
if(HasPermissionToEdit)
{
//Do the work!
}
しかし、これは私にいくつかの問題を与えます。誰かがデータベース上の生産上の証拠に新しい行を作成しました。そしてIDはもう正しくありません。そして私はC#コードの列挙を変更する必要があります。管理ユーザーは他のユーザーグループのルールを管理できるため、この表を使用する必要があります。
どうやって作業しますか?テーブルのレジストリを参照するには、より良い方法がありますか?
はい。私は多くの開発者がそれをやり遂げるのを見る。私は彼らの一人です。しかし、私はそれが安全ではないと思う。誰かがデータベースを変更でき、地図が間違ってしまうからです。しかし、私はこれを達成するための他の方法を見ていない。 –
あなたはいつも何かにマップしなければなりません、それはIDかもしれません、それは説明か他の文字列フィールドかもしれません。動的システム(DB)に1つのデータがあり、静的システム(Code)に1つのデータがあるという事実には常に問題があります。フィールドを列挙型にキャストできるので、整数型フィールドへのマッピングはきちんとしています。 – Slugart