2010-12-22 46 views
0

我有以下代码:的EntityFramework FluentAPI马平问题

namespace DynamicAssembly { 
    using System; 
    using System.Collections.Generic; 
    using System.Collections; 
    using System.Data.Objects; 
    using System.Data.EntityClient; 
    using System.Data.Entity; 
    using System.ComponentModel.DataAnnotations; 
    using System.Data.Entity.ModelConfiguration; 
    using System.Data.Entity.Infrastructure; 


    [Table("eElementDef1")] 
    public class ElementDef1 { 

      public int pID { get; set; } 
       public virtual ElementDef2 Pointer_EntityDef2 { get; set; } 
       public virtual ElementDef1 Poniter_EntityDef1 { get; set; } 

     public ElementDef1() { 
     } 
    } 

    [Table("eElementDef2")] 
    public class ElementDef2 { 


      public int pID { get; set; } 
      public String Name { get; set; } 

     public ElementDef2() { 
     } 
    } 

    public class Context : System.Data.Entity.DbContext { 

      public DbSet<ElementDef1> ElementDef1 
      { 
       get;set; 
      } 
      public DbSet<ElementDef2> ElementDef2 
      { 
       get;set; 
      } 

     protected override void OnModelCreating(ModelBuilder modelBuilder) 
     { 
        modelBuilder.Entity<ElementDef1>().HasKey(c => c.pID); 

modelBuilder.Entity<ElementDef1>().HasRequired(p => p.Pointer_EntityDef2) 
                     .WithMany() 
                     .IsIndependent() 
                     .Map(m => m.MapKey(p => p.pID, "Pointer_EntityDef2")); 


modelBuilder.Entity<ElementDef1>().HasRequired(p => p.Poniter_EntityDef1) 
                     .WithMany() 
                     .IsIndependent() 
                     .Map(m => m.MapKey(p => p.pID, "Poniter_EntityDef1")); 

      modelBuilder.Entity<ElementDef2>().HasKey(c => c.pID); 



     } 

     public Context() : 
       base("DynamicDefinitionConnection") { 
     } 
    } 

} 

问题是与该映射 modelBuilder.Entity()HasRequired(p值=> p.Pointer_EntityDef2) .WithMany() .IsIndependent。 () .Map(m => m.MapKey(p => p.pID,“Pointer_EntityDef2”));

的分贝不尊重德惯例,FK不是Pointer_EntityDef2pId 是否有可能在我的类只有1个属性(类型EntityDef2的Pointer_EntityDef2),而不是1个属性id和一个用于对象(此一个工程确定),以及该财产具有FK名称?而映射应该如何呢?

回答

0

这一口流利的API给你所需要的模式(不需要调用IsIndependent后地图()()):

[Table("eElementDef1")] 
public class ElementDef1 
{ 
    public int pID { get; set; } 
    public virtual ElementDef2 Pointer_EntityDef2 { get; set; } 
    public virtual ElementDef1 Poniter_EntityDef1 { get; set; } 
} 

[Table("eElementDef2")] 
public class ElementDef2 
{ 
    public int pID { get; set; } 
    public String Name { get; set; } 
} 

public class StackoverflowContext : DbContext 
{ 
    public DbSet<ElementDef1> ElementDef1s { get; set; } 
    public DbSet<ElementDef2> ElementDef2s { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<ElementDef1>().HasKey(c => c.pID); 
     modelBuilder.Entity<ElementDef2>().HasKey(c => c.pID); 

     modelBuilder.Entity<ElementDef1>().HasRequired(p => p.Pointer_EntityDef2) 
             .WithMany() 
             .IsIndependent(); 

     modelBuilder.Entity<ElementDef1>().HasRequired(p => p.Poniter_EntityDef1) 
             .WithMany() 
             .IsIndependent(); 
    } 
}