我已經有三個表的數據庫結構如下:流利的API映射
Table 1: Product
Columns: ProductID, PK
SKU, PK
Name
Table 2: ProductImages
Columns: ImageID PK
SKU
Table 3: Images
Columns: ImageID PK
ImageContent
忽略了一會兒該表ProductImages
看起來是不同之處在於獨特的PK約束是許多一對多關係強制爲一對一,因此是不必要的一對多表(這是一個現有的數據庫)。
我想有以下POCO
實體類:
public class Product
{
public int ProductId { get; set; }
public string SKU { get; set; }
public virtual Image Image { get; set; }
}
假設Image
也是我的實體模型的實體。
我第一次使用Entity Framework 5.0
與代碼和Fluent API
,我要瘋了試圖找出如何寫ProductMap
類(從EntityTypeConfiguration<Product>
派生)。具體來說就是關係映射。
渲染的SQL應該像實體框架的版本如下:
select p.SKU, p.Name, p.ProductID, I.ImageID, I.ImageContent
from Products p
inner join ProductImages si on p.SKU = si.SKU
inner join Images i on i.ImageId = si.ImageId
任何幫助,任何人都可以提供將與心臟得到滿足感到讚賞。
SKU不應該是ProductImages的主鍵嗎?如果是這種情況,那麼您會希望收集產品圖像集合,該圖像集合包含在您的產品類中。 – jfin3204
你不打算這樣做,除非你願意通過告訴它產品只有SKU作爲主鍵來欺騙EF。 (多對多映射是可能的)。但這可能會導致異常,因爲實際上SKU在產品中可能不是唯一的。 –