我正在开发多层应用程序解决方案,我的解决方案如下所示
我的Business.Process项目(业务层)只知道Business.DomainObject和Data.Repository项目,因此不知道并且与 Data.Sql.Entity 项目没有关系
我将业务(域)对象发送到存储库并执行在这个项目内部进行映射,然后我在存储库层内使用关系数据层进行 CRUD 过程。
我的传统领域对象是这样的,它只有属性
public class UserBO
{
public string Email { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的业务层类是这样的,
Repository r = new UserRepository();
r.Insert(myUserDomainObject);
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是我的“谓词”查询有一些问题。我的存储库接口中有一个方法
bool IsExists(Expression<Func<BusinessObject,bool>> predicate);
Run Code Online (Sandbox Code Playgroud)
并像这样在我的业务层中使用它;
Repository r = new UserRepository(); <br/>
r.IsExists(p => p.Email.Equals("email address"));
Run Code Online (Sandbox Code Playgroud)
如您所见,它的参数是“业务对象”,但我的实际存储库(与数据库连接)使用我的 dbml 文件内的“数据对象”。
public override bool IsExists(Expression<Func<DataObject, bool>> predicate){
return …Run Code Online (Sandbox Code Playgroud)