实体框架6在运行时更改数据列名称

时间:2013-12-02 12:50:37

标签: entity-framework

我正在研究现有的SQL数据库。我为我的一个实体创建了一个复杂类型“Address”,我使用属性“ColumnAttribute”来定义表格中的映射。

工作正常。

现在,我想将我的复杂类型“Address”重用于另一个表。

但是,由于现有原因,列的名称是不同的。

如何在不使用继承的情况下更改此特定表的列名?或者必须创建两个类型为Address的类。

public sealed class class1 
{
    public Adresse Adresse{get;set;}
}

public sealed class class2 
{
    // Need to change all ColumnAttributes for this specific class
    public Adresse Adresse{get;set;}
}

public sealed class Adresse : IAdresse
{
    #region IAdresse Membres

    [Column( "ADRESSE" )]
    public string Adresse1 { get; set; }

    [Column( "CODE_POSTAL" )]
    public string CodePostal { get; set; }

    [Column( "VILLE" )]
    public string Ville { get; set; }

    #endregion
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我没有准备好合适的测试。 假设复杂类型正如你所说的那样正常工作。

  

我创建了一个复杂类型“地址”....它工作正常。

尝试使用您可以覆盖的Fluent API。

public class YourDbContext : DbContext {
 protected override void OnModelCreating(DbModelBuilder modelBuilder) {
     // attempt override standard name of complex property
     modelBuilder.Entity<Class2>().Property(t=>t.Adresse.Adresse1).HasColumnName("BetterName");

 }
}