Учитывая простой класс POCO, такой как:
public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } }
Когда я пытаюсь запрос с проекцией на себя, например:
using (var context = new Context())
{
var user = context.User.Select(u => new User { Id = u.Id }).FirstOrDefault();
}
... Я получаю:
Необработанное исключение: System.ArgumentException: 'Id' не является членом типа 'ORMTest1Model.Users'
... который происходит от метода ValidateMemberInitArgs (...) из System.Linq.Expressions.Expression (используйте Reflector).
В этом методе тип из binding.Member.DeclaringType имеет тип PocoAdapters.UserAdapter (сгенерированный), а тип из переменной "type" имеет тип User (класс POCO).
Так что ... по какой-то причине это путаница.
Интересно, что если я создаю класс MyUser, который является точной копией класса poco User, он работает нормально, и оба типа в ValidateMemberInitArgs (...) имеют тип MyUser.
Может кто-нибудь воспроизвести проблему и пролить свет на решение?
Спасибо!
(ссылка на тот же вопрос в списке обсуждения проекта: http://code.msdn.microsoft.com/EFPocoAdapter/Thread/View.aspx?ThreadId=2138)