这是一种客户端-服务器架构问题。
我的解决方案中有 2 个项目:一个用于客户端的项目使用 Entity Framework 和 SQL Server Compact 数据库,另一个用于服务器端的项目也使用 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 并更改命名空间以使用客户端实体。这很丑陋,因为如果发生变化,我需要维护这两个类。有没有办法抽象整个事物并在双方(客户端和服务器)上使用相同的类(位于其他两个项目引用的单独项目中)?
我将衷心感谢您的帮助。
最好的,
安东尼