使用FluentNhibernate的SchemaExport

使用FluentNhibernate的SchemaExport,nhibernate,fluent-nhibernate,schemaexport,Nhibernate,Fluent Nhibernate,Schemaexport,这个代码有什么问题吗。我没有得到任何生成的内容,也没有抛出异常 public static void ExportSchema() { Configuration cfg = LoadDefaultConfiguration(); Fluently.Configure(cfg) .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.

这个代码有什么问题吗。我没有得到任何生成的内容,也没有抛出异常

  public static void ExportSchema()
        {
            Configuration cfg = LoadDefaultConfiguration();
            Fluently.Configure(cfg)
                .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("dnnSphere.Meta")))
                .ExposeConfiguration(c => new SchemaExport(c).SetOutputFile("myDDL.sql").Execute(true,true,false));
        }

这取决于你想做什么。例如,如果您使用的是内存数据库中的SQLite,除非指定连接,否则我永远不会让它工作。这意味着我必须先打开一个会话并获得会话的连接

    protected InMemoryFixture()
    {

        Configuration config = GetConfig();
        ISessionFactory sessionFactory = config.BuildSessionFactory();


        ISession session = _sessionFactory.OpenSession();

        new SchemaExport(_config).Execute(true, true, false, session.Connection, Console.Out);

    }

    private Configuration GetConfig()
    {
        return GetMappings()
            .Database(SQLiteConfiguration.Standard.InMemory)
            .BuildConfiguration();
    }

    private FluentConfiguration GetMappings()
    {
        return Fluently.Configure().Mappings(m => m.FluentMappings.AddFromAssemblyOf<NewsMap>());
    }
受保护的InMemoryFixture()
{
配置config=GetConfig();
ISessionFactory sessionFactory=config.BuildSessionFactory();
ISession session=_sessionFactory.OpenSession();
新SchemaExport(_config).Execute(true、true、false、session.Connection、Console.Out);
}
私有配置GetConfig()
{
返回GetMappings()
.Database(SQLiteConfiguration.Standard.InMemory)
.BuildConfiguration();
}
私有FluentConfiguration GetMappings()
{
流畅地返回.Configure().Mappings(m=>m.FluentMappings.AddFromAssemblyOf());
}

然后还有SchemaExport(cfg);当然还有SchemaUpdate(cfg)。

这取决于您想做什么。例如,如果您使用的是内存数据库中的SQLite,除非指定连接,否则我永远不会让它工作。这意味着我必须先打开一个会话并获得会话的连接

    protected InMemoryFixture()
    {

        Configuration config = GetConfig();
        ISessionFactory sessionFactory = config.BuildSessionFactory();


        ISession session = _sessionFactory.OpenSession();

        new SchemaExport(_config).Execute(true, true, false, session.Connection, Console.Out);

    }

    private Configuration GetConfig()
    {
        return GetMappings()
            .Database(SQLiteConfiguration.Standard.InMemory)
            .BuildConfiguration();
    }

    private FluentConfiguration GetMappings()
    {
        return Fluently.Configure().Mappings(m => m.FluentMappings.AddFromAssemblyOf<NewsMap>());
    }
受保护的InMemoryFixture()
{
配置config=GetConfig();
ISessionFactory sessionFactory=config.BuildSessionFactory();
ISession session=_sessionFactory.OpenSession();
新SchemaExport(_config).Execute(true、true、false、session.Connection、Console.Out);
}
私有配置GetConfig()
{
返回GetMappings()
.Database(SQLiteConfiguration.Standard.InMemory)
.BuildConfiguration();
}
私有FluentConfiguration GetMappings()
{
流畅地返回.Configure().Mappings(m=>m.FluentMappings.AddFromAssemblyOf());
}

然后还有SchemaExport(cfg);当然还有SchemaUpdate(cfg)。

不,我使用的是MSSQL 2005。问题是其中一列名为“Schema”。现在我解决了这个问题,我尝试了SQLLite provider,但得到了一个错误:在程序集SQLite.NET中找不到IDbCommand和IDbConnection实现。确保程序集SQLite.NET位于应用程序目录或全局程序集缓存中。如果程序集位于GAC中,请使用应用程序配置文件中的元素指定程序集的全名。这就是你得到的吗?这是一个常见的问题。首先,需要将SQLite引用设置为本地复制(引用属性),然后需要在运行项目之前构建项目。请注意,我主要使用SQLite进行测试,但它确实很漂亮!:)在MSSQL 2005的情况下,虽然我使用了新的SchemaExport(cfg),但您应该对您所拥有的一切没有问题;在这里创建成功。不,我使用的是MSSQL 2005。问题是其中一列名为“Schema”。现在我解决了这个问题,我尝试了SQLLite provider,但得到了一个错误:在程序集SQLite.NET中找不到IDbCommand和IDbConnection实现。确保程序集SQLite.NET位于应用程序目录或全局程序集缓存中。如果程序集位于GAC中,请使用应用程序配置文件中的元素指定程序集的全名。这就是你得到的吗?这是一个常见的问题。首先,需要将SQLite引用设置为本地复制(引用属性),然后需要在运行项目之前构建项目。请注意,我主要使用SQLite进行测试,但它确实很漂亮!:)在MSSQL 2005的情况下,虽然我使用了新的SchemaExport(cfg),但您应该对您所拥有的一切没有问题;在这里创造成功。