Bất cứ khi nào tôi tải một lớp Task, thuộc tính Document luôn luôn rỗng, mặc dù có dữ liệu trong db.fluent nhibernate HasOne WithForeignKey không hoạt động
nhiệm lớp:
public class Task
{
public virtual Document Document { get; set; }
công tác lập bản đồ ghi đè cho AutoPersistenceModel:
public void Override(AutoMap<Task> mapping)
{
mapping.HasOne(x => x.Document)
.WithForeignKey("Task_Id");
Như bạn có thể nhìn thấy hình gì NHProf nói là được chạy, điều kiện tham gia là sai, doesnt WithForeignKey dường như có hiệu lực. Trong thực tế, tôi có thể viết bất kỳ chuỗi trong mã trên và nó làm cho không có sự khác biệt.
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Id
Nó nên là:
FROM [Task] this_
left outer join [Document] document2_
on this_.Id = document2_.Task_Id
Nếu tôi hack dữ liệu trong db để id phù hợp, sau đó dữ liệu được nạp, nhưng rõ ràng đây là không chính xác - nhưng ít nhất nó chứng tỏ nó tải dữ liệu.
Edit: lục lọi trong nguồn NHib thạo để tìm ra XML sản xuất này:
<one-to-one foreign-key="Task_Id" cascade="all" name="Document" class="MyProject.Document, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
Edit: heres schema:
CREATE TABLE [dbo].[Document](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Task_Id] [int] NOT NULL,
CREATE TABLE [dbo].[Task](
[Id] [int] IDENTITY(1,1) NOT NULL,
Bất cứ ai có ý tưởng nào?
Cảm ơn
Andrew
Một khả năng tôi đồng ý, nhưng tại sao Task_Id không được hiển thị ở bất kỳ đâu? (ngay cả khi nó sai và do đó sẽ gây ra một ngoại lệ - nhưng nó không) –
Điều đó không làm việc, tuy nhiên nó có nghĩa là tôi cần một tài sản Task_id trên tài liệu, mà tôi không muốn có. Hoạt động bây giờ mặc dù cảm ơn –