2013-05-10 115 views
2

相关表格上的模式名称可能与[dbo]不同吗?相关表格上的不同模式名称 - 实体框架

我先使用代码。

实施例:

ApplicationRole.cs

public class ApplicationRole 
{ 
    public Guid ApplicationRoleId { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<ADGroup> ADGroups { get; set; } 
} 

ADGroup.cs

public class ADGroup 
{ 
    public Guid ADGroupId { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<ApplicationRole> ApplicationRoles { get; set; } 
} 

ApplicationRoleConfiguration.cs

public class ApplicationRoleConfiguration : EntityTypeConfiguration<ApplicationRole> 
{ 
    public ApplicationRoleConfiguration() 
    { 
     ToTable("T_ApplicationRoles", "LabConfig"); 

     this.HasKey(a => a.ApplicationRoleId); 

     this.Property(t => t.ApplicationRoleId) 
      .HasColumnName("ApplicationRole_GUID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 


    } 
} 

ADGroupConfiguration.cs

public class ADGroupConfiguration : EntityTypeConfiguration<ADGroup> 
{ 
    public ADGroupConfiguration() 
    { 
     ToTable("T_ADGroups", "LabConfig"); 

     this.HasKey(a => a.ADGroupId); 

     this.Property(t => t.ADGroupId) 
      .HasColumnName("ADGroup_GUID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

     // correlation table should also get schema [LabConfig] 
     this.HasMany(o => o.ApplicationRoles) 
      .WithMany(r => r.ADGroups) 
      .Map(m => 
      { 
       m.MapLeftKey("ADGroup_GUID"); 
       m.MapRightKey("ApplicationRole_GUID"); 
       ToTable("T_ApplicationRoleADGroups", "LabConfig"); 
      }); 
    } 
} 

但对数据库的结果总是:。

  • [LabConfig] [T_ADGroups]
  • [LabConfig] [T_ApplicationRoles]
  • [DBO] [ApplicationRoleADGroups ]

任何想法?我花了数小时的时间来处理我期望的模式,但没有取得任何成功。

回答

4

在我来说,我做了一些愚蠢的事我没看到...

比较原始ADGroupConfiguration.cs本:

public class ADGroupConfiguration : EntityTypeConfiguration<ADGroup> 
{ 
    public ADGroupConfiguration() 
    { 
     ToTable("T_ADGroups", "LabConfig"); 

     this.HasKey(a => a.ADGroupId); 

     this.Property(a => a.ADGroupId) 
      .HasColumnName("ADGroup_GUID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

     this.Property(t => t.Name).HasColumnName("Name").IsRequired(); 

     // the Mapping was causing the error. 
     // this Mapping is correct now 
     this.HasMany(o => o.ApplicationRoles) 
      .WithMany(r => r.ADGroups) 
      .Map(m => m.MapLeftKey("ADGroup_GUID") 
          .MapRightKey("ApplicationRole_GUID") 
          .ToTable("T_ApplicationRoleADGroups", "LabConfig")); 

    } 
} 

因此,我已经映射的错误它的藏身之实我正在寻找的问题...

总是仔细检查映射!

相关问题