私は、.NET Entity Frameworkプロジェクトを設計して、優れた階層型アプローチを実現するための最善の方法を決定しようとしています。これまで、プレイヤーが惑星を所有して操作するブラウズベースのゲームで試してみました。これが私がそれを持っている方法です:
Webサイト
これにはすべてのフロントエンドが含まれます。
C#プロジェクト-MLS.Game.Data
これには、すべてのデータマッピングを含むEDMXファイルが含まれています。ここでは他にあまりありません。
C#プロジェクト-MLS.Game.Business
これには、PlanetManager.csなどの「マネージャー」と呼ばれるさまざまなクラスが含まれています。惑星マネージャーには、MLS.Game.Dataから生成されたコードオブジェクトを返すgetPlanet(int planetID)など、惑星との対話に使用されるさまざまな静的メソッドがあります。
ウェブサイトから、私はこのようなことをします:
var planet = PlanetManager.getPlanet(1);
MLS.Game.Data(EDMXから生成)からPlanetオブジェクトを返します。それは機能しますが、フロントエンドがMLS.Game.Dataを参照する必要があることを意味するため、ある程度気になります。しかし、GUIはビジネスプロジェクトを参照するだけでよいといつも感じていました。
さらに、私のマネージャークラスは非常に重くなる傾向があることがわかりました。結局、数十の静的メソッドが含まれることになります。
だから...私の質問は-他のみんなはどのようにASPEFプロジェクトをレイアウトするのですか?
編集
しかし、もう少し後、私を悩ませている追加のアイテムがあります。たとえば、Planetオブジェクトがあり、これもウィザードから生成されたコードであるとします。私の惑星が特殊なプロパティを持っている必要があるときが来たらどうしますか?たとえば、惑星オブジェクトの他のプロパティに基づいたある種の計算である「人口」と言います。Planetから継承する新しいクラスを作成し、代わりにそれを返しますか?(うーん、それらのクラスはEFによって封印されているのだろうか?)
ありがとう