2015-12-01 3 views
1
[Table("IpForeclosureActionHeaders")] 
    public class ForeclosureActionHeader : FullAuditedEntity 
    { 
     // removed other properties for clarity 

     [ForeignKey("BankId")] 
     public virtual Bank Bank { get; set; } 
     public virtual int BankId { get; set; } 

     [ForeignKey("AssignedToBankId")] 
     public virtual Bank AssignedToBank { get; set; } 
     public virtual int AssignedToBankId { get; set; } 

    } 

    [Table("IpBanks")] 
    public class Bank : FullAuditedEntity 
    { 
     // removed other properties for clarity 

     public virtual ICollection<ForeclosureActionHeader> ForeclosureActionHeaders { get; set; } 

     public virtual ICollection<ForeclosureActionHeader> AssignedToBankForeclosureActionHeaders { get; set; } 
    } 

файл миграции:Чужие столбцы после Entity Framework кода первой миграции

public override void Up() 
     { 
      CreateTable(
       "dbo.IpForeclosureActionHeaders", 
       c => new 
       { 
        Id = c.Int(nullable: false, identity: true), 

        BankId = c.Int(nullable: false), 
        AssignedToBankId = c.Int(nullable: false), 
        Bank_Id = c.Int(), 
        Bank_Id1 = c.Int(), 
       }, 
       annotations: new Dictionary<string, object> 
       { 
        { 
         "DynamicFilter_ForeclosureActionHeader_SoftDelete", 
         "EntityFramework.DynamicFilters.DynamicFilterDefinition" 
        }, 
       }) 
       .PrimaryKey(t => t.Id) 
       .ForeignKey("dbo.IpBanks", t => t.Bank_Id) 
       .ForeignKey("dbo.IpBanks", t => t.Bank_Id1) 
       .ForeignKey("dbo.IpBanks", t => t.AssignedToBankId, cascadeDelete: false) 
       .ForeignKey("dbo.IpBanks", t => t.BankId, cascadeDelete: false) 
       .Index(t => t.BankId) 
       .Index(t => t.AssignedToBankId) 
      .Index(t => t.Bank_Id) 
      .Index(t => t.Bank_Id1) 

     } 

     public override void Down() 
     { 
      DropForeignKey("dbo.IpForeclosureActionHeaders", "BankId", "dbo.IpBanks"); 
      DropForeignKey("dbo.IpForeclosureActionHeaders", "AssignedToBankId", "dbo.IpBanks"); 
      DropForeignKey("dbo.IpForeclosureActionHeaders", "Bank_Id1", "dbo.IpBanks"); 
      DropForeignKey("dbo.IpForeclosureActionHeaders", "Bank_Id", "dbo.IpBanks"); 
      DropIndex("dbo.IpForeclosureActionHeaders", new[] { "Bank_Id1" }); 
      DropIndex("dbo.IpForeclosureActionHeaders", new[] { "Bank_Id" }); 
      DropIndex("dbo.IpForeclosureActionHeaders", new[] { "AssignedToBankId" }); 
      DropIndex("dbo.IpForeclosureActionHeaders", new[] { "BankId" }); 
      DropTable("dbo.IpForeclosureActionHeaders", 
       removedAnnotations: new Dictionary<string, object> 
       { 
        { "DynamicFilter_ForeclosureActionHeader_SoftDelete", "EntityFramework.DynamicFilters.DynamicFilterDefinition" }, 
       }); 
     } 
    } 

enter image description here

Q: Не могли бы вы сказать мне, почему он создает Bank_Id и Bank_Id1 столбцы на IpForeclosureActionHeaders таблицы ? B'cose Я назвал эти столбцы как BankId и AssignedToBankId. Как я могу избежать этого? Заранее спасибо.

ответ

3

Вы можете прочитать эту тему - это вообще та же ситуация: Why is EF code-first generating an extraneous foreign key column?

InverseProperty поможет вам избежать этой ненужной ссылки.

Решение:

[ForeignKey("BankId")] 
    [InverseProperty("ForeclosureActionHeaders")] 
    public virtual Bank Bank { get; set; } 
    public virtual int BankId { get; set; } 

    [ForeignKey("AssignedToBankId")] 
    [InverseProperty("AssignedToBankForeclosureActionHeaders")] 
    public virtual Bank AssignedToBank { get; set; } 
    public virtual int AssignedToBankId { get; set; } 
+0

Большое спасибо lot.It работает :) – Sampath

Смежные вопросы