2013-06-12 2 views
0

MySQL 용 Automapping으로 Fluent NHibernate를 구성하려고하는데 문제가 생겼습니다. 내가 꽤 많이 봤 거든 많은 다른 것들을 시도했지만 아직 해결책을 찾지 못했습니다.Fluent NHibernate with MySQL with Mono and ASP MVC 3

[AutoMap] 
public class MyNewTable 
{ 
    public virtual int Id {get; set;} 

    public virtual string Column1 {get; set;} 
    [Null] 
    public virtual string Column2 {get; set;} 
} 

가 여기에 기록 삽입을 시도 내 코드입니다 : 어쨌든

는 여기 여기 내 모델의 내 NHibernate에 구성

return 
    Fluently.Configure() 
     .Database(
      MySQLConfiguration.Standard.ConnectionString(cs => cs.FromConnectionStringWithKey("Db")) 
        .Dialect<NHibernate.Dialect.MySQL5Dialect>() 
        .ShowSql() 
       ) 
      .Mappings(
       x => 
       x.AutoMappings 
        .Add(
         FluentNHibernate.Automapping.AutoMap.AssemblyOf<CoreRegistry>() 
         .Where (t => t.IsDefined(typeof(AutoMap), false)) 
         .Conventions.Setup (c => { 
          c.Add<NullConvention>(); 
          c.Add<PrimaryKeyConvention>(); 
          c.Add<TableNameConvention>(); 
         }) 
        ) 
      ).BuildSessionFactory(); 

using (var session = sf.OpenSession()) 
using (var tx = session.BeginTransaction()) { 
    var myReallyTable = new MyNewTable 
    { 
     Column2 = null, 
     Column1 = "ghrtehrthrtete" 
    }; 

    session.Save (myReallyTable); 

    tx.Commit(); 
} 

마지막을, 여기에 SQL입니다 실제로 생성하는 것 :

INSERT INTO myproject.Core.MyNewTable, myproject.Core, Version=1.0.4911.33346, Culture=neutral, PublicKeyToken=null (Column1, Column2) VALUES (?, ?) 

어떤 이유로 프로젝트 이름을 테이블 이름 앞에 삽입하고 어셈블리 버전과 그 뒤에 내용을 추가합니다. 데이터베이스 이름에 기본 스키마를 설정하려고했습니다. 나는 방언을 MySQLDialect로 바꾸려고했지만, 그 중 하나도 작동하지 않았다.

누구든지이 부분에 빛이 비치면 매우 감사 할 것입니다.

감사합니다.

답변

1

글쎄, 나는 돌아와서 내가 무슨 멍청이인지 보여.

instance.EntityType.Name 대신 instance.Name을 사용하는 테이블 이름 규칙이 있습니다. 오, 글쎄, 적어도이 게시물은 MySQL이 자동 매핑하는 방법을 알고 싶어한다면 여기에있을 것입니다. : D