gpt4 book ai didi

entity-framework - 流畅的 API 映射

转载 作者:行者123 更新时间:2023-12-04 05:21:35 25 4
gpt4 key购买 nike

我有一个包含三个表的数据库,结构如下:

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 应该类似于以下 Entity Framework 的版本:
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

任何人可以提供的任何帮助都将得到衷心的感谢。

最佳答案

我遇到了同样的问题,直到我开始使用 Entity Framework Power Tools

使用它,您可以生成清晰的实体,例如业务对象和映射类。
帮助我创建出色数据访问层的好文章:Reverse Engineer Code First

我认为映射应该是这样的:

public class ProductMap : EntityTypeConfiguration<Product>
{
public ProductMap ()
{
// Primary Key
this.HasKey(t => t.ProductId);

// Properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(256);

// Table & Column Mappings
this.ToTable("Product");
this.Property(t => t.ProductId).HasColumnName("ProductID");
this.Property(t => t.Name).HasColumnName("Name");

// Relationships
this.HasMany(t => t.Products)
.WithMany(t => t.Images)
.Map(m =>
{
m.ToTable("ProductImages");
m.MapLeftKey("ProductID");
m.MapRightKey("ImageID");
});
}
}

关于entity-framework - 流畅的 API 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com