Join 在Simple.Data中预定义联接

Join 在Simple.Data中预定义联接,join,simple.data,Join,Simple.data,我有一个表用户,其外键指向另一个表部门。 用户对象具有部门的POCO。我可以选择一个部门poco中填充以下简单数据的用户。按id查询数据: db.Users.With(db.Users.Departments.As("Department")).FindByUserID(userId); 现在,我不仅按id加载用户,还按名称加载用户,这将导致以下查询: db.Users.With(db.Users.Departments.As("Department")).FindByUserName(use

我有一个表用户,其外键指向另一个表部门。 用户对象具有部门的POCO。我可以选择一个部门poco中填充以下简单数据的用户。按id查询数据:

db.Users.With(db.Users.Departments.As("Department")).FindByUserID(userId);
现在,我不仅按id加载用户,还按名称加载用户,这将导致以下查询:

db.Users.With(db.Users.Departments.As("Department")).FindByUserName(userName);
为了使其干燥,我想我可以将连接重构为一个变量并重用它:

var userJoinedWithDepartment = db.Users.With(db.Users.Departments.As("Department"));
userJoinedWithDepartment.FindByUserID(userId);
然而,这会带来麻烦。在另一点上,我得到了一个关于已经打开的事务的错误,这使我相信,通过定义已经在后台执行某些操作的变量。我看不到正在执行SQL语句


有没有办法绕过这一点并重用联接的定义?

解决方案不是使其成为
var
,而是成为
动态的

dynamic userJoinedWithDepartment = db.Users.With(db.Users.Departments.As("Department"));
userJoinedWithDepartment.FindByUserID(userId);