Jam*_*lls 0 c# entity-framework ef-fluent-api
我的数据库如下所示:
dbo.产品表:
Id | int
Status | tinyint
Run Code Online (Sandbox Code Playgroud)
dbo.ProductNames 表:
ProductId | int
Name | nvarchar(4000)
Run Code Online (Sandbox Code Playgroud)
代码的简化版本是:
public class Product{
public int Id { get; set; }
public string Name { get; set; }
public ObjectStatus Status { get; set; }
}
public class ProductEntityConfiguration : EntityConfiguration<Product> {
public ProductEntityConfiguration() {
ToTable("Products");
HasKey(p => p.Id);
Property(p => p.Id).HasColumnName("Id");
Property(p => p.Status).HasColumnName("Status");
}
}
Run Code Online (Sandbox Code Playgroud)
如何映射作为普通属性存在于不同表中的产品名称,以便如果有人请求,EF 必须通过 Id 连接两个表?
我认为在这种情况下你必须使用实体拆分。您有一个实体(产品),并且希望将其拆分为两个表(产品和产品名称)。尝试使用以下映射:
public class ProductEntityConfiguration : EntityConfiguration<Product>
{
public ProductEntityConfiguration()
{
Map(m =>
{
m.Property(t => t.ProductId).HasColumnName("MyIdChanged");
m.Property(t => t.Status).HasColumnName("Status");
m.ToTable("Product")
})
.Map(m =>
{
m.Property(t => t.ProductId).HasColumnName("MyProductIdChanged");
m.Property(t => t.Name).HasColumnName("MyProductName");
m.ToTable("ProductNames");
});
}
}
Run Code Online (Sandbox Code Playgroud)
这将配置适当的主键和外键并自动执行连接。
| 归档时间: |
|
| 查看次数: |
6398 次 |
| 最近记录: |