我已经有三个表的数据库结构如下:流利的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在产品中可能不是唯一的。 –