6

Có bất kỳ ví dụ hay nào về cách sử dụng (NHibernate.Criterion.IdentifierEqExpression) trực tuyến này không? Tôi không thể tìm thấy. Tôi là một chút bối rối về những gì bạn có nghĩa vụ phải vượt qua vào constructor.NHibernate - Buộc thoát trên Bảng Tên

Tôi chuyển vào int32 của 1 và tôi tiếp tục nghĩ thử nghiệm của mình về cơ bản sẽ thực hiện một loại truy vấn "id = 1" và thay vào đó nó sẽ xuất hiện "nơi id =?" và một cái gì đó về các thông số vị trí. Nếu đó không phải là những gì được cho là sẽ được truyền vào constructor ... thì sao?

Bất Issue
Khi tôi nhìn vào sản lượng SQL có vẻ như được làm việc một cách chính xác, ngoại trừ một thực tế bàn của tôi được đặt theo tên người dùng và NHibernate không kèm theo nó như [User]. Bất kỳ cách nào để buộc điều này?

+0

Bạn có thể đăng ví dụ về biểu thức tiêu chí của mình không? –

+0

Tôi không thấy mối quan hệ giữa IdentifierEqExpression và thoát tên bảng ... vui lòng giải thích thêm một chút –

Trả lời

15

Chỉ định tên bảng là ` User `. Ví dụ:

(HBM) 
<class name="User" table="`User`"> 

(Fluent) 
public UserMap() 
{ 
    WithTable("`User`"); 
    ... 

(Mapping By Code) 
public UserMap() 
{ 
    Table("`User`"); 
    ... 

Tương tự, với các cột bạn sẽ phải làm một cái gì đó như:

Map(x => x.IsCurrent, "`Current`"); 

Oh những niềm vui khi làm việc với DBS di sản.

+2

Bạn có thể sử dụng dấu gạch chéo (') để thoát các tên theo cách độc lập của cơ sở dữ liệu ([] là SQL Server cụ thể). –

+1

Điểm tốt, tôi thấy anh ấy đang sử dụng [] và thậm chí không nghĩ về nó. Tôi sẽ cập nhật bài đăng của mình vì lợi ích của các phương pháp hay nhất. –

+0

Tuyệt. Không có ý tưởng back-tick là tiêu chuẩn. Có phải đó là một cái gì đó Hibernate chỉ mượn từ MySQL, và sau đó phân tích ra để làm cho nó độc lập với cơ sở dữ liệu? Quá xấu các thiết lập phương ngữ không chăm sóc này cho bạn. – BuddyJoe