Có thể thực hiện tìm kiếm toàn cục được tìm thấy trên các đối tượng được quản lý NHibernate không?Tìm tham chiếu đối tượng toàn cầu trong NHibernate
Cụ thể, tôi có một lớp liên tục được gọi là "Io". Có một số lượng lớn các trường trên nhiều bảng có khả năng chứa đối tượng thuộc loại đó. Có cách nào (cho một trường hợp cụ thể của một đối tượng Io), để lấy một danh sách các đối tượng (của bất kỳ loại nào) mà thực sự tham chiếu đến đối tượng cụ thể đó? (Điểm thưởng nếu nó có thể xác định các trường cụ thể thực sự chứa tham chiếu, nhưng điều đó không quan trọng.)
Vì ánh xạ NHibernate xác định tất cả các liên kết (và cơ sở dữ liệu bên dưới có liên kết khóa ngoài tương ứng), nên có một số cách để làm điều đó.
Hãy tưởng tượng điều này loại cấu trúc:
class Io
{
public int Id { get; set; }
// other fields specific to the Io type
}
class ThingOne
{
public int Id { get; set; }
public Io SensorInput { get; set; }
public Io SolenoidOutput { get; set; }
// other stuff
}
class ThingTwo
{
public int Id { get; set; }
public Io SensorInput1 { get; set; }
public Io SensorInput2 { get; set; }
public SubThing Doohickey { get; set; }
// ...
}
class SubThing
{
public int Id { get; set; }
public Io ControlOutput1 { get; set; }
// ...
}
Cho một ví dụ cụ thể của Io, tôi muốn khám phá ra rằng nó được tham chiếu bởi ThingTwo với id 12. Hoặc rằng nó được tham chiếu bởi điều đó và cũng bởi ThingOne với id 16. Nếu có thể, ví dụ, tham chiếu đầu tiên là thông qua SensorInput2, ví dụ.
Lúc đầu, điều này đã cho tôi một số rắc rối, nhưng điều đó hóa ra lại là một lỗi trong ánh xạ hbm của tôi. Sau khi san bằng kết quả vào một danh sách duy nhất, điều này thực hiện chính xác những gì tôi đã sau. Cảm ơn! – Miral
Rất đẹp nhưng bạn nên biết ** toSearch.GetType() **. Nó có thể trả về đối tượng proxy thay vì đối tượng thực. –
@ S.M.Amin bạn đang trộn Get() với Load().Get() sẽ không trả về proxy, Load() sẽ – Jaguar