我有這樣的問題: 使用表達式進行手動Linq-To-Sql映射是否有效?
的Vehicle
類型從具有屬性「ID」的類型EntityObject
派生。
我想我得到爲什麼L2S無法將其轉換爲SQL-它不知道WHERE子句應該包括WHERE VehicleId == value
。 VehicleId
btw是表格中的PK,而上面的對象模型中的屬性是「ID」。
我能用表達式樹贏得這個獎嗎?因爲創建Expression
似乎很容易傳遞給SingleOrDefault
方法,但是L2S仍然無法翻譯它?
我想成爲DDD友好的,所以我不想裝飾我的領域模型對象與ColumnAttributes
等我很高興,但是我自定義我的L2S DBML文件,並添加表達式助手/無論在我的「數據層」希望將這種ORM業務遠離我的領域模型。
更新:
我沒有用我的select語句的對象初始化語法。就像這樣:
private IQueryable<Vehicle> Vehicles()
{
return from vehicle in _dc
select new Vehicle() { ID = vehicle.VehicleId };
}
我實際使用一個構造函數和from what I've read這將導致上述問題。這是我在做什麼:
private IQueryable<Vehicle> Vehicles()
{
return from vehicle in _dc
select new Vehicle(vehicle.VehicleId);
}
我明白,L2S不能表達式樹從屏幕抓取以上,因爲它不知道它通常會從對象初始化語法推斷的映射轉換。我怎樣才能解決這個問題?我是否需要使用屬性綁定來構建Expression
?
我想也許你誤解了我的問題。我害怕這一點 - 很難闡明這個問題。 我不會在我的存儲庫之外使用'IQueryable'。 此外,「你可以通過重構你的Vehicle.ID到Vehicle.VehicleID來解決這個問題(是的,他們工作,如果他們是相同的名稱)」是不正確的 - 將字段改爲'VehicleID'不會解決我的問題。綁定上下文受制於使用初始化器語法而不改變屬性名稱。這就是初始化語法的全部要點 - 無縫地從PropA映射到ProbB。 謝謝你的回答。 – 2011-05-23 01:36:53