0
我已經建立了我的數據庫與流利NHibernate和SQL Server,它與SQL Server工作正常。每次我執行代碼時,都會創建數據庫結構並插入數據,從而導致應用程序界面完美運行。如果我關閉程序,數據庫和內容將保持保存狀態。流利NHibernate本地mdf文件不保留表結構
我不想在SQL服務器數據庫中,我希望數據庫是在解決方案文件結構的* .mdf文件。所以我可以複製應用程序而無需安裝過程。
的問題,這個話題的原因,就是使用解決方案文件結構中的文件,應用程序的作品完美運行時,但是當我關閉應用程序的數據都沒有了。如果我再次啓動應用程序,我插入的數據就消失了。
我的類是SQL Server中的以下內容:
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;")
要提交/持久化數據到數據庫我使用以下結構:
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!");
}
}
}
有誰知道爲什麼會發生這種情況? 在這一刻,我不介意使用另一種類型的數據庫類型的,我會開始進行與其他類型的測試。不過,我想知道這個的原因。
您是否使用交易爲您插入? – Rabban
這一行'新SchemaUpdate工具(CFG).Execute(真,真)'的'SessionFactory'創建代碼,你會每次你'創建SessionFactory'時間來得到一個乾淨的架構。你不需要每次都這樣做? –
@Rabban我編輯了我的文章,以更好地回答你的問題。繼續,是的,我在會話對象內部啓動事務,並在最後進行提交。 – Nuno