0

次のコードがあります。

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 ではありません。私のクラスでは、ID 用の 1 つのプロパティとオブジェクト用の 1 つのプロパティ (これは正常に動作します) ではなく、1 つのプロパティ (EntityDef2 型の Pointer_EntityDef2) のみを持つことは可能ですか? FK名を持つプロパティ?そして、マッピングはどのように見えるべきですか?

4

1 に答える 1

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();
    }
}
于 2010-12-22T15:11:26.067 に答える