簡體   English   中英

CodeFirst EF 4.1 Inheritance - 重命名 PK/FK

[英]CodeFirst EF 4.1 Inheritance - Renaming PK/FK

我有兩個類,ThreadItem 和 Enquiry。

public class ThreadItem
{
    [Key]
    public int Id { get; set; }

    public DateTime Created { get; set; }
} 

public class ThreadItemMapping : EntityTypeConfiguration<ThreadItem>
{
    public ThreadItemMapping()
    {
        Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).HasColumnName("ThreadItemId");
    }
}

[Table("Enquiry")]
public class Enquiry : ThreadItem
{
    public string Comment { get; set;}
}

現在,這行得通,沒有一個問題。 我有一個 [ThreadItem] 表和一個 [Enquiry] 表。 我的查詢表有一個映射到 ThreadItem 的 PK/FK,這是我需要的。 但是,我想重命名該列。

當前是 [ThreadItemId],根據 ThreadItemMapping class。 我想將其重新命名為 [EnquiryId]。 我知道它被稱為 [ThreadItemId] 是有道理的,老實說,這更像是一個“是否可能”的問題。

有任何想法嗎?

干杯,D

http://msdn.microsoft.com/en-us/library/gg197525%28v=vs.103%29.aspx

我並不是說它不能完成,但這些例子並沒有表明正在做這樣的事情。

但是,如果您使用 Fluent-API 約定,則非常簡單。

您的 POCO 定義:

public class BaseClass
{
    public int Id {get; set;}
}

public class DerivedClass : BaseClass
{
    public string Data {get; set;}
}

配置到 DB 的映射:

public class BaseConfiguration : EntityTypeConfiguration<BaseClass>
{
    public BaseConfiguration()
{
    HasKey(k => k.Id);
    Property(p => p.Id).HasColumnName("Id").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
}
}

public class DerivedConfiguration : BaseConfiguration
{
    public DerivedConfiguration()
{
    Property(p => p.Id).HasColumnName("BaseClassId");
}
}

把它們放在一起

public class MyContext : DbContext
{
    public MyContext(string connectionString) : base(connectionString)
{
    Database.SetInitializer<MyContext>(null);
}

public DbSet<BaseClass> Bases { get; set; }
public DbSet<DerivedClass> Deriveds { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new BaseConfiguration());
    modelBuilder.Configurations.Add(new DerivedConfiguration());
}
}

所以你實例化一個 MyContext 傳入你的連接字符串,配置告訴 EF 如何與表相關聯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM