Tôi đang làm việc với một số bảng nơi tôi muốn lớp C# có tên thuộc tính khác với cột bảng bên dưới. Tuy nhiên, khi tôi sử dụng phương thức Dịch để đọc kết quả, các thuộc tính không khớp với tên nguồn không bao giờ được điền. Ngay cả khi tôi sử dụng LINQ để tạo ra SQL.LINQ to SQL DataContext.Translate và thuộc tính có tên khác với nguồn
Ví dụ, bàn của tôi được định nghĩa trong DB như thế này:
CREATE TABLE User_Entry (
UserId int IDENTITY (1, 1) NOT NULL,
Login_Id varchar (50) NOT NULL,
Active char(1) NOT NULL,
PASSWORD varchar(75) NULL
)
Đây là lớp nó ánh xạ tới (tạo ra bởi nhà thiết kế LINQ ... LINQ thuộc tính và các công cụ khác bỏ qua cho ngắn gọn):
public partial class User
{
int UserId;
string Login;
string Active,
string Pwd
}
Khi tôi làm như sau, thuộc tính Login và Pwd không được điền nhưng UserId và thuộc tính đang hoạt động.
Data.DbContext db = new Data.DbContext();
IQueryable query = db.Users.Where(usr => usr.Login == request.LoginString);
SqlCommand cmd = (SqlCommand)data.GetCommand(query);
... execute the command (asynchronously) ...
User user = db.Translate<User>(dataReaderResult).FirstOrDefault();
! Tại thời điểm này, tôi kiểm tra đối tượng người dùng và tôi có thể thấy rằng cột Đăng nhập và Pwd không được điền!
Đây là sql được tạo ra:
exec sp_executesql N'SELECT [t0].[UserID] AS [UserId], [t0].[Login_ID] AS [Login], [t0].[Active], [t0].[PASSWORD] AS [Pwd]
FROM [dbo].[User_Entry] AS [t0]
WHERE [t0].[Login_ID] = @p0', N'@p0 varchar(13)', @p0 = 'test_user'
Ban đầu, khi cột UserId đã có một tên thuộc tính khác nhau tôi đã nhận được một ngoại lệ The required column [UserId] does not exist in the results
. Tôi nhìn xung quanh và tôi thấy một phản ứng từ một số người MSFT nói rằng đó là một lỗi.
Điều này có liên quan không? Nó đã từng được sửa chưa? Có ai biết khi nào nó sẽ được sửa?
Chỉnh sửa: Một số thông tin khác.
Các lỗi mà tôi nghĩ rằng đây có liên quan đến có một bình luận từ Kathy Lu MSFT vào ngày 14 tháng 8 năm 2007 here, nơi cô nói:
Cảm ơn bạn đã báo cáo vấn đề này. Từ vấn đề của bạn, chúng tôi có thể tái tạo vấn đề và nhóm sản phẩm đang xem xét giải pháp và phân loại phù hợp.
Tôi tự hỏi liệu điều này có liên quan đến những gì tôi đang trải nghiệm hay không và liệu tôi có thể nhận thêm thông tin về nó hay không. Tôi đã tìm kiếm linq translate site:connect.microsoft.com
nhưng tôi không tìm thấy bất kỳ thứ gì.
Bạn đang sử dụng phiên bản beta hoặc RTM? –
Đó là Visual Studio 2008 SP1 (.Net 3.5 SP1) –
Vẫn còn có vẻ là một vấn đề trong .Net 4.0 – Pedro