Fluent NHibernate 本地 mdf 文件不保持 table 结构

Fluent NHibernate local mdf file doesn't keep table structure

我已经使用 Fluent NHibernate 和 SQL 服务器设置了我的数据库,它在 SQL 服务器。每次我执行代码时,都会创建数据库结构并插入数据,应用程序界面运行良好。如果我关闭程序,数据库和内容将保留。

我不想要SQL服务器中的数据库,我希望数据库是解决方案文件结构中的一个*.mdf文件。所以我可以直接复制应用程序而无需安装过程。

问题和这个主题的原因是,使用解决方案文件结构中的文件,应用程序在 运行 时运行完美,但当我关闭应用程序时,数据都消失了。如果我再次启动该应用程序,我插入的数据将消失。

我的 class 是 SQL 服务器的以下内容:

class NHibernateHelper
{
    private static ISessionFactory _sessionFactory;

    private static ISessionFactory SessionFactory
    {
        get
        {
            if (_sessionFactory == null)
                InitializeSessionFactory();

            return _sessionFactory;
        }
    }

    private static void InitializeSessionFactory()
    {
        _sessionFactory = Fluently.Configure()
            .Database(
                MsSqlConfiguration.MsSql2012
                .ConnectionString(@"server=MyComputer;Database=MyDatabase;Trusted_Connection=true;")
                .ShowSql())
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyEntity>())
            .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(true, true))
            .BuildSessionFactory();
    }

    public static ISession OpenSession()
    {
        return SessionFactory.OpenSession();
    }
}

对于本地文件,我只是更改 ConnectionString 行:

.ConnectionString(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="+AppDomain.CurrentDomain.BaseDirectory+ "General\Data\MyDatabase.mdf" + ";Integrated Security=True;")

要commit/persist数据到数据库我用的结构如下:

        using (var session = NHibernateHelper.OpenSession())
        {
            using (var transaction = session.BeginTransaction())
            {

                var newEntity = new EntEntity
                {
                    //Data to populate

                };

                session.SaveOrUpdate(newEntity);
                transaction.Commit();

                if (transaction.WasCommitted)
                {
                    MessageAndCleanInterface("Sucessful created!");
                }
            }
        }

有谁知道为什么会这样? 此刻,我不介意使用其他类型的数据库类型,我将开始使用其他类型进行测试。 不过,我想知道这是为什么。

Visual Studio 每次构建都会覆盖您的 .mdf。如果你只启动你的 .exe 文件而不构建新的,你的数据应该被保留。