2011-08-04 129 views
1

說我有3個表格,Cars,Persons,CarOwnersLinq To Sql一對多

Cars只是一個汽車表和Persons是不同的人可以擁有汽車。 CarOwners具有CarIdPersonId關係和CarOwnerId PK。

如果我只是創建了關係,然後將它們拖到linq上下文中,Person類的屬性將生成,稱爲CarOwners。爲了讓這個人擁有我會做以下查詢汽車:

var cars = person.CarOwners.Select(c=> c.Car); 

但是我想能夠做到:

var cars = person.Cars; 

是,在所有可能的?額外的一步很煩人。

+0

人員是否有一個收集表示該人員與之相關聯的汽車?人也是如何填充的 – msarchet

+0

人是從DB中抽取的任何隨機人員。該人擁有一系列汽車用品,但我需要一系列汽車 –

+0

您是否可以將Cars汽車屬性添加到爲您執行Linq查詢的Person類? –

回答

4

您只需在Person創建一個新的屬性:

public partial class Person 
{ 
    public IEnumerable<Car> Cars 
    { 
     get { return this.CarOwners.Select(c => c.Car); } 
    } 
} 

或升級到實體框架,你可以從物理模型分離的邏輯模型。

+0

不幸的是,這並不適用於增加和刪除:( –

1

嘗試從sql數據庫中的CarOwners中刪除CarOwnerId。然後在SSMS中使用設計器模式(使用Shift鍵)選擇CarIdPersonId,右鍵單擊並選擇設置主鍵。

在EF 4中,您將以這種方式在模型中只顯示導航鍵(您可以使用:Person.CarsCar.Persons)。不確定L2S。

+0

一個組合PK沒有幫助:/我想我會做@Jakub的方式 –