C# 如何通过映射表映射EF对象
我有两个数据库表--Customer\u值和Customer\u属性。。。而且是。。。哑的糟透了 客户价值观包括C# 如何通过映射表映射EF对象,c#,entity-framework,entity-framework-6,ef-code-first,ef-code-first-mapping,C#,Entity Framework,Entity Framework 6,Ef Code First,Ef Code First Mapping,我有两个数据库表--Customer\u值和Customer\u属性。。。而且是。。。哑的糟透了 客户价值观包括 CustomerId | AttributeId | Value -------------------------------- 01 | 01 | Steve 02 | 01 | Frank 01 | 02 | Smith etc... 客户属性如下所示 Attribute
CustomerId | AttributeId | Value
--------------------------------
01 | 01 | Steve
02 | 01 | Frank
01 | 02 | Smith
etc...
客户属性如下所示
AttributeId | Value
------------------------
01 | First Name
02 | Last Name
我想把第一个表映射成这样的实体对象
类{
字符串名{get;set;}
字符串LastName{get;set;}
}
但我一点也不知道该怎么做
我使用的是EF 6,先编码,假设您的上下文如下(注意FK引用,我们可以使用模型,通过Customer_值启用FK引用): 希望这能给你一个正确的想法
假设您的上下文如下(请注意FK引用,我们可以使用该模型通过Customer_值启用FK引用): 希望这能给你一个正确的想法
有什么特别的原因让你想将它们一起映射到一个实体对象,而不是作为两个单独的实体映射到对象,然后再使用LINQ/EF Core进行连接?@SamMullinix——这只是因为在没有通过
AttributeId
过滤的情况下,我永远不会从值表中提取实例。我宁愿先做这些,为了便于使用。您想将它们一起映射到实体对象,而不是作为两个单独的实体映射到对象,然后再使用LINQ/EF Core进行连接吗?@SamMullinix——这只是因为在没有筛选的情况下,我永远不会从值表中提取实例AttributeId
。为了便于使用,我宁愿提前完成所有这些。
class MyContext : DbContext
{
public DbSet<Customer_Values> Customer_Value { get; set; }
public DbSet<Customer_Attributes> Customer_Attribute { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer_Attributes>()
.HasOne(v => v.Customer_Values)
.WithOne(a => a.Customer_Attributes)
.HasForeignKey(v => v.AttributeId)
.HasConstraintName("FK_Constraint_Name_Here");
}
}
public class Customer_Values
{
public int CustomerId { get; set; }
public int AttributeId { get; set; }
public string Value { get; set; }
public <Customer_Attributes> Customer_Attribute { get; set; }
}
public class Customer_Attributes
{
public int AttributeId { get; set; }
public string Value { get; set; }
public int CustomerId { get; set; }
}