Entity framework 4 EntityFramework FluentAPI映射问题

Entity framework 4 EntityFramework FluentAPI映射问题,entity-framework-4,mapping,fluent-interface,Entity Framework 4,Mapping,Fluent Interface,我有以下代码: 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

我有以下代码:

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") {
        }
    }

}
名称空间动态合理{
使用制度;
使用System.Collections.Generic;
使用系统集合;
使用System.Data.Object;
使用System.Data.EntityClient;
使用System.Data.Entity;
使用System.ComponentModel.DataAnnotations;
使用System.Data.Entity.ModelConfiguration;
使用System.Data.Entity.Infrastructure;
[表(“eElementDef1”)]
公共类元素def1{
公共int-pID{get;set;}
公共虚拟元素def2指针\u EntityDef2{get;set;}
公共虚拟元素Def1 Poniter_EntityDef1{get;set;}
公共元素def1(){
}
}
[表(“eElementDef2”)]
公共类元素def2{
公共int-pID{get;set;}
公共字符串名称{get;set;}
公共元素def2(){
}
}
公共类上下文:System.Data.Entity.DbContext{
公共数据库集元素def1
{ 
获得;设置;
}
公共数据库集元素def2
{ 
获得;设置;
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasKey(c=>c.pID);
modelBuilder.Entity().HasRequired(p=>p.Pointer\u EntityDef2)
.有很多
.IsIndependent()
.Map(m=>m.MapKey(p=>p.pID,“指针\实体定义2”);
modelBuilder.Entity().HasRequired(p=>p.Poniter\u EntityDef1)
.有很多
.IsIndependent()
.Map(m=>m.MapKey(p=>p.pID,“Poniter_EntityDef1”);
modelBuilder.Entity().HasKey(c=>c.pID);
}
公共上下文():
基本(“动态定义连接”){
}
}
}
问题在于这种映射 modelBuilder.Entity().HasRequired(p=>p.Pointer\u EntityDef2) .有很多 .IsIndependent() .Map(m=>m.MapKey(p=>p.pID,“指针\实体定义2”)

db不遵守de约定,FK不是指针\u EntityDef2pId
在我的类中,是否可能只有1个属性(类型为EntityDef2的指针\u EntityDef2),而不是id的1个属性和对象的1个属性(此属性工作正常),并且该属性具有FK名称?映射应该是什么样子?

这个流畅的API为您提供了所需的模式(无需在IsIndependent()之后调用Map()):

[表(“eElementDef1”)]
公共类元素def1
{
公共int-pID{get;set;}
公共虚拟元素def2指针\u EntityDef2{get;set;}
公共虚拟元素Def1 Poniter_EntityDef1{get;set;}
}
[表(“eElementDef2”)]
公共类元素def2
{
公共int-pID{get;set;}
公共字符串名称{get;set;}
}
公共类StackoverflowContext:DbContext
{
公共DbSet ElementDef1s{get;set;}
公共DbSet ElementDef2s{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasKey(c=>c.pID);
modelBuilder.Entity().HasKey(c=>c.pID);
modelBuilder.Entity().HasRequired(p=>p.Pointer\u EntityDef2)
.有很多
.IsIndependent();
modelBuilder.Entity().HasRequired(p=>p.Poniter\u EntityDef1)
.有很多
.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();
    }
}