myn*_*kow 3 entity-framework ef-code-first entity-framework-4.1
我成功映射了我的复杂类型,如下所示:
modelBuilder
.ComplexType<Name>()
.Property(name => name.First)
.HasColumnName("firstNameColumn");
modelBuilder
.ComplexType<Name>()
.Property(name => name.Last)
.HasColumnName("lastNameColumn");
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但请注意,我们没有指定任何实体类型.如果我们想要为具有列"firstN"和"lastN"的表映射相同的Complext类型,该怎么办?我尝试了EntityTypeConfiguration <>但是不允许在那里指定复杂类型.最后,看起来complexTypes是全局定义的.
您还可以在实体级别自定义复杂类型列名称,如下所示:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
结果模式将是:
在这里你可以找到另一个例子.
归档时间: |
|
查看次数: |
1104 次 |
最近记录: |