【问题标题】:NHibernate seedingNHibernate 播种
【发布时间】:2014-04-28 22:33:15
【问题描述】:

为了成功启动,我的应用程序依赖于数据库中需要存在的一些初始值。在 Entity Framework 中,我可以使用 fluent API (fluent sql) 创建迁移脚本,以在应用程序启动时为我的数据库初始种子。

NHibernate 也可以这样吗?可能使用 FluentNHibernate?

【问题讨论】:

    标签: c# entity-framework nhibernate fluent-nhibernate


    【解决方案1】:

    您可以通过手动创建实体并从数据库中写入/删除它们来做到这一点。

    您还可以创建执行此操作的 sql 脚本并通过执行以下操作手动运行它们:

    using (ISession session = sessionFactory.OpenSession())
    {
        using (FileStream strm = File.OpenRead("Seed.sql"))
        {
            using (var reader = new StreamReader(strm))
            {
                string sqlDelete = reader.ReadToEnd();
    
                try
                {
                    IQuery query = session.CreateSQLQuery(sqlDelete);
                    query.ExecuteUpdate();
                }
                catch (Exception ex)
                {
                    log.Fatal(ex.ToString());
                }
            }
        }
    }
    

    【讨论】:

    • 这就是我害怕的。编写 SQL 查询时,它们是否在内部转换为适当的方言?
    • 我不这么认为。尽管我认为如果您将种子数据创建为实体并像这样管理它,它将与您在实体框架中所做的一样简单。我的意思是使用对象来插入/更新/删除您的数据是 ORM 的重点。您正试图摆脱编写原始 sql。
    猜你喜欢
    • 2017-03-23
    • 2014-09-05
    • 1970-01-01
    • 2011-01-11
    • 2015-04-13
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多