---
title: "Save funkar men inte Flush"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/167811-save-funkar-men-inte-flush"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "freguz"
published: "2008-01-05T18:19:12.000Z"
updated: "2008-01-06T09:26:14.000Z"
replies: 5
views: 368
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/167811-save-funkar-men-inte-flush"
---

# Save funkar men inte Flush

## #1 — freguz, 2008-01-05T18:19Z

Har stött på lite patrull i mitt NHibernate:ande

Har mappat en klass och allt funkar med Load och Save, men Flushen vill sig inte riktigt ....

Det är ett gäng vanliga sträng-properties i klassen, men Id är en Int32 och generator modell "native" (det är en vanlig auto increment primary key i tabellen)

Om jag Loadar mitt objekt, borde det inte gå att direkt manipulera objektegenskaper (utom Id), och sen genast köra en Flush(); ?

Även om jag skapar en new och sen kör Save()  så funkar det fint med increment osv, så allt verkar ju i sin ordning.... kan man tycka   :q

Mappning

```
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
	<class name="plan9_CSharp.Melodifest, plan9_CSharp" table="Melodifest">
		<id name="Id" type="Int32">
			<generator class="native" />
		</id>
		<property name="Name" type="String" length="100"/>
		<property name="Description" type="String" length="1000"/>
		<property name="Song_1" type="String" length="100"/>
		<property name="Song_2" type="String" length="100"/>
		<property name="Song_3" type="String" length="100"/>
		<property name="Song_4" type="String" length="100"/>
		<property name="Song_5" type="String" length="100"/>
		<property name="Song_6" type="String" length="100"/>
		<property name="Song_7" type="String" length="100"/>
		<property name="Song_8" type="String" length="100"/>
		<property name="DateStartVote" column="DateStart" type="DateTime" />
		<property name="DateStopVote" column="DateStop" type="DateTime" />
		<property name="RuleId" type="Int32"/>
		<property name="Winners_A" type="String"/>
		<property name="Winners_B" type="String"/>
	</class>
</hibernate-mapping>
```

Lite kod

```
NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
cfg.AddAssembly("plan9_CSharp");

ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();

M = (Melodifest)session.Load(typeof(Melodifest),int.Parse(ddl_songs.SelectedItem.Value));
M.Name = Name.Text;
M.DateStopVote = DateTime.Parse(DateStop.Text);
M.DateStartVote = DateTime.Parse(DateStart.Text);
M.RuleId = int.Parse(ddl_pointssystem.SelectedItem.Value);
M.Description = Description.Text;
						
M.Song_1 = Song1.Text;
M.Song_2 = Song2.Text;
M.Song_3 = Song3.Text;
M.Song_4 = Song4.Text;
M.Song_5 = Song5.Text;
M.Song_6 = Song6.Text;
M.Song_7 = Song7.Text;
M.Song_8 = Song8.Text;
M.Winners_A = Winners_A.Text.Replace(" ", "").Trim(',');
M.Winners_B = Winners_B.Text.Replace(" ", "").Trim(',');
session.Flush(); // <---------------- funkar ej
session.Close();
```

Permalänk: https://www.webforum.nu/p/167811

## #2 — Nickemannen, 2008-01-05T18:29Z

session.SaveOrUpdate(M);
eller
session.Update(M);

Permalänk: https://www.webforum.nu/p/2068172

## #3 — freguz, 2008-01-05T18:31Z

Ok, tack, men borde inte Flush() funka egentligen? Jag vill ju gärna veta vilka kriterier det är för Flush

Permalänk: https://www.webforum.nu/p/2068173

## #4 — Nickemannen, 2008-01-05T20:08Z

Det Flush gör är att synkronisera allting med databasen.
Så du måste först göra Save/Update eller SaveOrUpdate och sedan Flush, men jag rekommenderar att du gör dina förändringar i en transaction t.ex.

```
using(ITransaction transaction = session.BeginTransaction())
{
try
{
ändringar bla bla
session.save(...)

transaction.commit();
}
catch(Exception)
{
transaction.rollback();
throw;
}
}
```

Permalänk: https://www.webforum.nu/p/2068179

## #5 — freguz, 2008-01-05T21:02Z

Ja det funkar säkert utmärkt :) 
Men det jag egentligen undrar över är varför deras tutorial-kod funkar (som jag själv bygg o testat) men inte min...

hibernate.org

```
// open another session to retrieve the just inserted user
session = factory.OpenSession();

User joeCool = (User)session.Load(typeof(User), "joe_cool");

//The User object you get back is live! Change its properties and it will get persisted to the database on next Flush(). 

// set Joe Cool's Last Login property
joeCool.LastLogon = DateTime.Now;

// flush the changes from the Session to the Database
session.Flush();
```

Permalänk: https://www.webforum.nu/p/2068187

## #6 — Nickemannen, 2008-01-06T09:26Z

Hmm, det har du rätt i.

Prova att byta ut native till identity i mappningen.

Kolla på punkt 5.1.4.1. generator
<http://www.hibernate.org/hib_docs/nhibernate/html/mapping.html>

Permalänk: https://www.webforum.nu/p/2068250

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/167811-save-funkar-men-inte-flush
