我有以下代码:
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 =&gt; p.Pointer_EntityDef2) 。和很多() .IsIndependent() .Map(m =&gt; m.MapKey(p =&gt; p.pID,“Pointer_EntityDef2”));
db不遵守约定,FK不是Pointer_EntityDef2pId 是否有可能在我的类中只有1个属性(EntityDef2类型的Pointer_EntityDef2)而不是id的1个属性和对象的一个属性(这个工作正常),以及具有FK名称的属性?那个映射应该怎么样?
答案 0 :(得分:0)
这个流畅的API为您提供了所需的架构(在IsIndependent()之后无需调用Map()):
[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();
}
}