[编辑] 用更通用的术语来说,如果,我们有很高的号码。需要通过WCF(TCP和HTTP)支持CRUD操作的实体(表),解决方案设计的最佳方法是什么。 [编辑结束]
我们在数据库中有大约300个表,我们必须为所有这些表提供crud操作。我们正在尝试使用链接 - http://blog.longle.net/2013/05/11/genericizing-the-unit-of-work-pattern-repository-pattern-with-entity-framework-in-mvc/
中描述的实体框架和存储库模式来实现和codeplex项目 http://genericunitofworkandrepositories.codeplex.com/documentation
它具有以下IService接口及其实现,我可以在其中传递Entity对象,而不必手动实现方法。
public interface IService<TEntity> where TEntity : Entity
{
[OperationContract]
TEntity Find(params object[] keyValues);
[OperationContract]
IQueryable<TEntity> SelectQuery(string query, params object[] parameters);
[OperationContract]
void Insert(TEntity entity);
[OperationContract]
void InsertRange(IEnumerable<TEntity> entities);
[OperationContract]
void InsertGraph(TEntity entity);
[OperationContract]
void InsertGraphRange(IEnumerable<TEntity> entities);
[OperationContract]
void Update(TEntity entity);
[OperationContract(Name="DeleteByID")]
void Delete(object id);
[OperationContract]
void Delete(TEntity entity);
[OperationContract]
List<TEntity> Query();
[OperationContract(Name="QueryEntity")]
List<TEntity> Query(IQueryObject<TEntity> queryObject);
}
由于WCF不支持泛型,我必须创建一个接口和一个实现该接口的类。对于员工实体
[ServiceContract] public interface IEmployeeService : IService<Employee>{}
class EmployeeService : Service<Employee>, IEmployeeService{}
问题是为所有这些添加crud操作,我将不得不创建大约300个这样的服务接口并在WPF客户端应用程序中使用它。这是正确的设计方法吗?还有哪些其他选择。
注意: - 我们必须通过WCF支持HTTP和TCP协议。