6

エンティティ フレームワークを使用して、ASP.Net でホテル登録/請求アプリケーションを開発しています。登録者への請求書の作成に関して、私のクライアントには多くの風変わりな基準があります。1 泊 1 ベッド (かなり標準的な..) の請求システムの代わりに、顧客は、年齢、訪問する特定の日付、部屋のタイプ (ダブルベッド、シングルベッドなど) または彼らが参加している会議、または4つすべて...

これが私の図です: http://s8.postimg.org/w8nxh8qlh/abstraction.jpg

比較的若いコーダーであるため、「ルール」テーブルのどこかで何かが欠けているように感じます。私がやろうとしているのは、管理者が任意の数の ConditionalStatements を作成できるようにすることです ("Age > 5" または "Age < 10" ここで、"Age" は Statement.Value、'>' は Condition.Value、および'5' は ConditionalStatement.Value) であり、任意の数のそれらをリンクして、「ルール」を作成します。次に管理者は、Rule をさまざまな RateSchedules に関連付けます。これにより、アプリケーションは、滞在を登録した顧客の請求書を生成できるようになります。

私は正しい方向に進んでいるように感じます。このソリューションの大部分は、必要なすべての方法で機能しますが、何かが正しくないようです。「ルール」の作成に関して2つ質問があります。

  • 「ルール」の設計に関する限り、私は何を間違っていますか? 管理者が新しい RuleSet.ID を作成するたびに新しい RuleSet.ID を生成するのは間違っていると感じます.これはプログラムで行うべきことですか? この規則のプロセスを完全に再考する必要がありますか?

  • Entity Framework/足場の観点から、データベースに新しいルールを追加するための最良の方法は何ですか? デフォルトのスキャフォールディングでは一度に 1 つの行を挿入できますが、実際にルールを作成するには、RuleSet.ID を複数の ConditionalStatement.ID に関連付ける必要がありますが、これを EF で直感的に行う方法がわかりません。足場..

正しい方向へのポインタは高く評価されます! ありがとう :)

編集: 質問への回答に基づいて再設計しましたが、調査中にMicrosoftのビジネスルールエンジンに出くわしました:http: //msdn.microsoft.com/en-us/library/aa561216.aspx および数式評価器: http://ncalc.codeplex.com/ 他の誰かが将来この質問を見つけた場合に備えて、これらのリンクが役立ちます。みんな助けてくれてありがとう!

4

1 に答える 1

-1

DB でドメインをモデル化することは、通常、悪い習慣です。DB は詳細である必要があり、すべてのロジックはコード内にある必要があります。そのためには、クライアントからの要件を把握し、その上にドメインを作成する設計を行う必要があります。この段階では、永続化は非常に簡単です。

たとえば、PricingRule 抽象クラスと、AgePricingRule、DatePricingRule、RoomTypePricingRule などのさまざまな実装があるとします。その後、Bill オブジェクトは PricingRules を取得して適用し、最終的な価格を取得できます。

保存する必要があるデータの複雑さは些細なものであり、価格設定ルールの構成だけです。

于 2013-05-23T12:42:39.493 に答える