2011-01-31 40 views
0

當我生成我的表流利我的一個數據庫,每場2個,我想不通爲什麼停止流利從產生雙外鍵

像我有FK關鍵我多麼希望他們也看(StudentId),但它也生成密鑰他們如何希望它看起來(student_id數據)

public class PermissionLevel 
    { 
     public virtual int PermissionLevelId { get; private set; } 
     public virtual Student Student { get; set; } 
     public virtual Course Course { get; set; } 
     public virtual Permission Permission { get; set; } 
    } 

    public class PermissionMap : ClassMap<Permission> 
    { 
     public PermissionMap() 
     { 
      Table("Permissions"); 
      Id(x => x.PermissionId).Column("PermissionId"); 
      Map(x => x.Name).NvarcharWithMaxSize().Not.Nullable(); 
      HasMany(x => x.PermissionLevels); 
     } 
    } 


public class PermissionLevelMap : ClassMap<PermissionLevel> 
{ 
    public PermissionLevelMap() 
    { 
     Table("PermissionLevels"); 
     Id(x => x.PermissionLevelId).Column("PermissionLevelId"); 
     References(x => x.Permission).Not.Nullable().Column("PermissionId"); 
     References(x => x.Student).Not.Nullable().Column("StudentId"); 
     References(x => x.Course).Not.Nullable().Column("CourseId"); 

    } 
} 

    public class StudentMap : ClassMap<Student> 
    { 
     public StudentMap() 
     { 
      Table("Students"); 
      Id(x => x.StudentId).Column("StudentId"); 
      HasMany(x => x.PermissionLevels); 
     } 
    } 

所有地雷看起來像我得到

http://gyazo.com/b20cd95baa4cde6d8b06c98d50b8ddec.png

ISessionFactory fluentConfiguration = Fluently.Configure() 
                .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("Connection"))) 
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Framework.Data.Mapping.StudentMap>()) 
                .ExposeConfiguration(BuidSchema) 
                .BuildSessionFactory(); 
+0

你可以發佈你的配置代碼嗎?以及PermissionLevel的映射? – nkirkes 2011-01-31 22:29:22

+0

@mannish - oops發佈錯誤的意思是做PermissionLevel。 – chobo2 2011-01-31 22:32:32

回答

1

我無法複製的問題,但試試這個:在您的配置,改變映射到包括像外鍵名稱的約定:在地方

.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Framework.Data.Mapping.StudentMap>().Conventions.Add(ForeignKey.EndsWith("Id")) 

有了,你就可以從各個映射文件中移除Column()調用並獲得相同的結果。由於我不能重現你的確切問題,我希望這也能夠解決問題(我有一個預感,Fluent的AutoMap功能以某種方式進入混音中,但它看起來不像你的代碼允許這樣做,所以它真的只是一個預感)。