私はasp.netアプリケーションに取り組んでおり、次のシナリオがあります:
テーブルに edmx filw があり、「コード生成項目の追加」から Poco エンティティを作成しました。質問は、たとえばカスタム メソッド (checkIfEmailExists、AddUser など) をどこに追加すればよいかということです。カスタム ツールを実行するか、edmx ファイルを更新すると、poco エンティティでエンティティが再生成され、すべてのメソッドが失われますか?
私はasp.netアプリケーションに取り組んでおり、次のシナリオがあります:
テーブルに edmx filw があり、「コード生成項目の追加」から Poco エンティティを作成しました。質問は、たとえばカスタム メソッド (checkIfEmailExists、AddUser など) をどこに追加すればよいかということです。カスタム ツールを実行するか、edmx ファイルを更新すると、poco エンティティでエンティティが再生成され、すべてのメソッドが失われますか?
エンティティは、一部のビジネス ロジックやセキュリティから分離する必要があります。エンティティに依存するメソッドを実装するセキュリティなどのクラスを作成する必要がありますが、それらをエンティティに直接追加しないでください。
作成するすべてのクラスは、単一責任の原則に従う必要があります。エンティティ クラスにはパブリック プロパティしか含まれていない可能性がありますが、AddUser または CheckIfEmailExists が本当にこれらのクラスに属しているかどうかを最初に考える必要があります。それらがそこに属していない場合は、それらを独自のクラスに分けます。それらのものをエンティティに入れることについて強い議論がある場合は、それらのメソッドをそれらのエンティティに入れます。
では、AddUser は何をするのでしょうか。クラス/テーブル User と別のクラス/テーブル UserDetails がある場合、前者のクラス/テーブルまたは後者の一部として AddUser を使用しますか?
生成されたクラスは部分的です。クラスの一部が含まれています。別のファイルを別の場所に作成し、命名 (つまり、名前空間とクラス名とpartial
キーワード) に従ってください。このファイルは、新しい自動生成が実行されるときに書き換えられません。ここにカスタム コードを配置します。ファイルはコンパイラによって「マージ」されます。