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();
}
}