Tôi có một bảng cơ sở dữ liệu mà tôi không thể thay đổi, trong đó có dữ liệu như:thành thạo NHibernate - Flatten nhiều hàng vào một thực thể duy nhất
FooTable
Id | EntityAUniqueId | EntityBUniqueId | EntityCUniqueId
============================================================
1 | A1 | B1 | C1
2 | A1 | B1 | C2
3 | A1 | B2 | C3
4 | A1 | B2 | C4
5 | A2 | B3 | C5
6 | A2 | B3 | C6
7 | A2 | B4 | C7
8 | A2 | B4 | C8
Tôi muốn bản đồ này để cấu trúc sau:
interface IEntityA
{
string UniqueId { get; }
IEnumerable<IEntityB> { get; }
}
interface IEntityB
{
string UniqueId { get; }
IEnumerable<IEntityC> { get; }
}
interface IEntityC
{
string UniqueId { get; }
}
class EntityA : IEntityA { ... }
class EntityB : IEntityB { ... }
class EntityC : IEntityC { ... }
Dữ liệu ở trên sẽ dẫn đến các đối tượng sau bị kéo:
EnityA(A1)
|-EnityB(B1)
| |-EntityC(C1)
| |-EntityC(C2)
|-EnityB(B2)
|-EntityC(C3)
|-EntityC(C4)
EnityA(A2)
|-EnityB(B3)
| |-EntityC(C5)
| |-EntityC(C6)
|-EnityB(B4)
|-EntityC(C7)
|-EntityC(C8)
Hiện tại tôi chỉ cần ghi vào bảng không đọc.
Tôi đang sử dụng FluentNHibernate với Tự động lập bản đồ và quy ước.
Tôi bắt đầu đi xuống con đường của Linh kiện nhưng nhận ra rằng đây không phải là những gì họ đã dự định. Một giải pháp có thể là sử dụng ba khung nhìn trên bàn nhưng điều này bổ sung thêm các vấn đề khác và tôi muốn tránh nó nếu có thể và tôi không thể cảm thấy rằng phải có một cái gì đó đã có trong khuôn khổ để giải quyết vấn đề này.
Nếu giao diện gây nhầm lẫn cho câu trả lời, vui lòng bỏ qua chúng khỏi giải pháp.
không chắc chắn những gì bạn muốn đạt được ở đây; bạn có thể giải thích tại sao bạn có bộ sưu tập EntityA/B/C không? theo ví dụ của bạn có vẻ như mỗi UniqueId có chính xác một hàng dữ liệu được kết nối với nó. hoặc có các bảng khác không được đề cập ở đây? –
@sJhonny Tôi đã cập nhật câu hỏi – Bronumski