Одна из причин, по которой люди делают объекты невосприимчивости к сопротивлению (POCO), заключается в том, чтобы избежать такого сценария. Для уровня доступа к данным просто нет возможности иметь ссылку на класс, о котором он не знает, - гораздо лучше, чтобы класс не знал о доступе к данным.
Единственный способ, которым вы действительно можете это сделать, - это реализовать Get () для User, а не для UserDA. Вы можете сделать что-то вроде этого:
public class User {
IGetFromPresistance<User> _userFetcher;
public static IList<User> GetMatching(Specification<User> spec) {
var values = _userFetcher.Find(spec); //Returns a DataRow or IDictionary<string, object>
return new User() {
PhoneNumber = new PhoneNumber(values["phone"].ToString()),
Name = values["name"].ToString(),
};
}
}