gpt4 book ai didi

entity-framework - 英孚 CF : complex types for legacy database

转载 作者:行者123 更新时间:2023-12-01 23:25:49 25 4
gpt4 key购买 nike

我成功地映射了我的复杂类型:

modelBuilder
.ComplexType<Name>()
.Property(name => name.First)
.HasColumnName("firstNameColumn");

modelBuilder
.ComplexType<Name>()
.Property(name => name.Last)
.HasColumnName("lastNameColumn");

到目前为止一切顺利。但请注意,我们没有指定任何实体类型。如果我们也想为包含列“firstN”和“lastN”的表映射相同的复杂类型怎么办?我试过 EntityTypeConfiguration<> 但你不能在那里指定复杂类型。最后,复杂类型似乎是全局定义的。

最佳答案

您还可以在实体级别自定义复杂类型列名称,如下所示:

public class User
{
public int UserId { get; set; }
public Name NameInfo { get; set; }
}

public class Customer
{
public int CustomerId { get; set; }
public Name NameInfo { get; set; }
}

[ComplexType]
public class Name
{
public string First { get; set; }
public string Last { get; set; }
}

public class Context : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Customer> Customers { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<Name>()
.Property(name => name.First)
.HasColumnName("firstNameColumn");

modelBuilder.ComplexType<Name>()
.Property(name => name.Last)
.HasColumnName("lastNameColumn");

// Here is how can customize the column names at the entity level:
modelBuilder.Entity<Customer>().Property(u => u.NameInfo.First)
.HasColumnName("firstN");

modelBuilder.Entity<Customer>().Property(u => u.NameInfo.Last)
.HasColumnName("lastN");
}
}

结果架构将是:

enter image description here

Here 你可以找到另一个例子。

关于entity-framework - 英孚 CF : complex types for legacy database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5416349/

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