これは一種のクライアント サーバー アーキテクチャの問題です。
私のソリューションには 2 つのプロジェクトがあります。1 つは Entity Framework と SQL Server Compact データベースを操作するクライアント側のプロジェクトで、もう 1 つは Entity Framework を操作するが実際の SQL Server データベースを操作するサーバー側のプロジェクトです。両方のデータベースのデータベース スキーマはまったく同じであるため、異なる .edmx ファイルを使用していますが、生成されたエンティティは同じように見え、名前空間のみが異なります。ところで、私は ADO.NET DbContext Generator を使用して永続性を無視したエンティティ クラスを生成しています。ここまでは順調ですね。ここで、すべてのサーバーデータベースアクセスメソッドを内部に含む (非常に大きな) クラスを作成しました。たとえば、次のようになります。
public User CreateUser(string userId, string username, bool isGlobalAdmin)
{
using (var context = new ServerEntities())
{
try
{
var user = new User
{
UserID = userId,
Username = username,
IsGlobalAdmin = isGlobalAdmin
};
context.User.Add(user);
context.SaveChanges();
return user;
}
catch (Exception ex)
{
HandleEfException(ex);
}
}
return null;
}
問題は、クライアント側で同じメソッドを持つ同じクラスが必要なことです。したがって、このクラスをクライアント プロジェクトにコピーし、ServerEntities の名前を ClientEntities に変更し、クライアント エンティティを使用するために名前空間を変更します。何かが変更された場合、両方のクラスを維持する必要があるため、これは非常に醜いです。全体を抽象化し、同じクラス (他の 2 つのプロジェクトが参照する別のプロジェクトにある) を両側 (クライアントとサーバー) で使用する方法はありますか?
よろしくお願いします。
一番、
アントニー