2010-02-17 21 views
8

Tôi muốn tham gia 2 bảng bằng cách sử dụng khung thực thể. Tôi muốn tham gia vào bảng thứ hai để được trên một cột chính không chính.Khuôn khổ thực thể - Làm cách nào để tôi tham gia các bảng trên các cột khóa không chính trong bảng phụ?

ví dụ: Tôi có một Foo bảng với các lĩnh vực

Foo.Id (PK) 
Foo.DbValue 

và bảng Bar

Bar.Id (PK) 
Bar.DbValue 
Bar.Description 

Và tôi muốn tham gia Foo Bar tại EF trên các lĩnh vực DbValue.

Trong chế độ hibernate/nhibernate, bạn có thể thực hiện việc này bằng cách thêm tham số cột vào nhiều tham số. khoảng như thế này

<class name="Foo" table="Foo> 
    <id name="Id" column="Id" /> 
    <many-to-one name="Bar" class="Bar" column="**DbValue**" /> 
</class> 

Cảm ơn trước nếu có ai biết cách thực hiện điều này trong EF.

Trả lời

7

Bạn không thể làm điều này như một mối quan hệ được đặt tên (tức là cách tiêu chuẩn).

Vì vậy, điều này có nghĩa mối quan hệ KHÔNG là một phần của mô hình.

Tuy nhiên bạn vẫn có thể làm một LINQ tiêu chuẩn tham gia mặc dù:

from f in ctx.Foo 
join b in ctx.Bar on f.DbValue equals b.DbValue 
select new {f,b} 

Hope this helps

Check-out của tôi EF Tips series.

Các vấn đề liên quan