2013-11-14 3 views
0

У меня есть таблица Пользователи с внешним ключом к другому столу Отдел. Объект пользователя имеет POCO для отдела. Я могу выбрать пользователя с отделом-росо заселяется со следующим Simple.Data по-идентификатор запроса:Предопределяющие соединения в Simple.Data

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

Теперь я не только пользователи нагрузки по идентификатору, но и по имени, которое приводит в следующем запросе:

db.Users.With(db.Users.Departments.As("Department")).FindByUserName(userName); 

Чтобы сделать это DRY я думал, что я мог бы реорганизовать объединение в переменную и использовать его:

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

Однако это вызывает проблемы. В какой-то другой момент я получаю сообщение об ошибке с уже открытой транзакцией, которая заставляет меня думать, что, определяя эту переменную, которая уже выполняет что-то в фоновом режиме. Я не вижу, как выполняется оператор SQL.

Есть ли способ обойти это и повторно использовать определения для объединений?

ответ

0

Решение не должно быть var, но dynamic.

dynamic userJoinedWithDepartment = db.Users.With(db.Users.Departments.As("Department")); 
userJoinedWithDepartment.FindByUserID(userId); 
Смежные вопросы