Dis*_*ile 6 c# entity-framework ef-code-first
我在Code First Entity框架中有一个实体,目前看起来像这样:
public class Entity
{
// snip ...
public string OriginalDepartment { get; set; }
public string OriginalQueue { get; set; }
public string CurrentDepartment { get; set; }
public string CurrentQueue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想为这些类型创建复杂类型,如下所示:
public class Location
{
public string Department { get; set; }
public string Queue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想在Current和Original中使用相同的类型:
public Location Original { get; set; }
public Location Current { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是可能的,或者我需要创建两个复杂类型CurrentLocation和OriginalLocation?
public class OriginalLocation
{
public string Department { get; set; }
public string Queue { get; set; }
}
public class CurrentLocation
{
public string Department { get; set; }
public string Queue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
它支持开箱即用,您不需要创建两个复杂类型.
您还可以使用模型构建器明确配置复杂类型
modelBuilder.ComplexType<Location>();
Run Code Online (Sandbox Code Playgroud)
要自定义列名称,应从父实体配置配置它们
public class Location
{
public string Department { get; set; }
public string Queue { get; set; }
}
public class MyEntity
{
public int Id { get; set; }
public Location Original { get; set; }
public Location Current { get; set; }
}
public class MyDbContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.ComplexType<Location>();
modelBuilder.Entity<MyEntity>().Property(x => x.Current.Queue).HasColumnName("myCustomColumnName");
}
}
Run Code Online (Sandbox Code Playgroud)
这将映射MyEntity.Current.Queue到myCustomName列
| 归档时间: |
|
| 查看次数: |
3242 次 |
| 最近记录: |