Tôi có một mô hình ở trên cùng của mô hình cơ sở dữ liệu của tôi và ánh xạ các đối tượng trong Kho lưu trữ của tôi.Làm thế nào để sử dụng các lớp nhà máy với LINQ cho sql?
Tuy nhiên, có vẻ như nó tạo sự khác biệt cho dù tôi "chọn mới" trực tiếp trong Người dùng của tôi hoặc "chọn nhà máy" như được triển khai bên dưới. Tôi nhận được lỗi khi chạy, rằng phương thức CreateFromDbModel không có bản dịch sang sql (System.NotSupportedException).
Có cách nào khác không? Tôi có thể sửa nó bằng cách nào đó được không?
Lý do muốn sử dụng phương pháp nhà máy là tôi có thể instanciate đối tượng ở nơi khác và muốn giữ 'mã lập bản đồ ở một nơi ...
Thanks cho bất kỳ ý kiến, Anders
public IQueryable<User> GetUsers(bool includeTeams)
{
return from u in _db.sc_Players
where (includeTeams || (!u.aspnet_User.sc_Player.IsTeam))
select UserFactory2.CreateFromDbModel(u);
}
public static User CreateFromDbModel(sc_Player player)
{
return new User
{
Id = player.sc_PlayerID,
FirstName = player.FirstName.Trim(),
LastName = player.LastName.Trim(),
PresentationName = player.FirstName.Trim() + " " + player.LastName.Trim(),
LoginName = player.aspnet_User.LoweredUserName,
IsTeam = player.IsTeam,
Email = player.aspnet_User.aspnet_Membership.Email,
Password = player.aspnet_User.aspnet_Membership.Password
};
}
Cảm ơn Douglas và Rossisdead, tôi đã thử chuyển đổi vào danh sách trước khi gọi phương pháp nhà máy của tôi, nhưng không chỉ làm tôi phải trả lại tất cả các LINQ các đối tượng từ cơ sở dữ liệu, tôi cũng phải xây dựng tất cả các đối tượng mô hình miền của mình - và tôi đang cố gắng tìm cách không yêu cầu ... Hơn nữa, tôi thực hiện lọc trong lớp dịch vụ của mình và sẽ phải chuyển đổi danh sách trở lại có thể truy vấn. ... –
Hi Anders, Xem Chỉnh sửa 2 ở trên. – Douglas
Hi Douglas, Tôi đánh dấu câu trả lời của bạn là câu trả lời, nhưng tôi hy vọng sẽ giữ cho các đối tượng linq cơ sở dữ liệu trong lớp dữ liệu, nơi gợi ý của bạn sẽ trưng ra các đối tượng lớp dữ liệu cho lớp dịch vụ. –