c# Seznam forumov c#
c#
 
 Pogosta vprašanjaPogosta vprašanja   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   RSS Feed   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Zasebna sporočilaZasebna sporočila   PrijavaPrijava 




Vaja 12 - ORM - vozila

 
Objavi novo temo   Odgovori na to temo    c# Seznam forumov -> iseesharp
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:31    Naslov sporočila: Vaja 12 - ORM - vozila Odgovori s citatom

Vaja 12 - ORM - vozila
Izdelajte aplikacijo, ki bo preko uporabe knjižnice Nhibernate omogočala izvedbo osnovnih
operacij s podatkovno bazo MySQL. Z ORM pristopom napravite razred (entiteto) Car, ki se
v podatkovni bazi interpretira kot tabela Vozilo, ki vsebuje naslednje 4 stolpce: Id (primarni
ključ), Znamka (string), Model (string), Letnik (int). S pritiskom na gumb Init_DB se v
podatkovni bazi ustvari tabela Vozilo. S pritiskom na gumb Del_DB se v podatkovni bazi
izbriše tabela Vozilo. Gumb Vnos omogoči nov zapis v tabelo. Iskanje preko stolpca Znamka
se izvrši ob pritisku na gumb Isci. Popravek podatkov (Model, Letnik) glede na izbrano
Znamko se izvrši ob pritisku na gumb Osvezi. Gumb Brisi izbrise izbrano vrstico (izbira po
stolpcu Znamka) iz tabele.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:32    Naslov sporočila: Odgovori s citatom

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NHibernate.Cfg;
using NHibernate.Mapping.Attributes;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
using vaja12.Entity;

namespace vaja12
{
public partial class Form1 : Form
{
private ISessionFactory m_SessionFactory = null;
private ISession m_Session = null;
public Form1()
{
InitializeComponent();
ConfigureLog4Net();
ConfigureNHibernate(false);
}
private void ConfigureLog4Net()
{
log4net.Config.XmlConfigurator.Configure();
}

private void ConfigureNHibernate(bool bDrop)
{
Configuration config = new Configuration();
config.Configure();
HbmSerializer.Default.Validate = true;
config.AddInputStream(HbmSerializer.Default.Serialize(System.Reflection.Assembly.GetExecutingAssembly()));
config.AddAssembly(typeof(Car).Assembly);
new SchemaExport(config).Execute(true, true, bDrop);
m_SessionFactory = config.BuildSessionFactory();
m_Session = m_SessionFactory.OpenSession();
}

private void ResetSession()
{
m_Session.Close();
m_Session.Dispose();
m_Session = m_SessionFactory.OpenSession();
}


private void Form1_Load(object sender, EventArgs e)
{

}

private void btInitDB_Click(object sender, EventArgs e)
{
ConfigureNHibernate(false);
}

private void btDelDB_Click(object sender, EventArgs e)
{
ConfigureNHibernate(true);
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
m_Session.Close();
m_Session.Dispose();
m_SessionFactory.Close();
m_SessionFactory.Dispose();
}

//Insert:
private void btVnos_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
Car d = new Car();
d.Znamka = tbZnamka.Text;
d.Model = tbModel.Text;
d.Letnik = Int32.Parse(tbLetnik.Text);
m_Session.Save(d);
tx.Commit();
tbOutput.Text = "Insert Succeded!";
}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}
}


//Select:
private void btIsci_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
IQuery query = m_Session.CreateQuery("from Car d where d.Znamka = ?");
Car res = query.SetString(0, tbZnamka.Text).UniqueResult<Car>();
tx.Commit();
tbOutput.Text = "Found: " + System.Environment.NewLine + "Brand: " + res.Znamka
+ System.Environment.NewLine + "Model: " + res.Model
+ System.Environment.NewLine + "Year: " + res.Letnik;
}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}
}

//Update:
private void btOsvezi_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
IQuery query = m_Session.CreateQuery("from Car d where d.Znamka = ?");
Car res = query.SetString(0, tbZnamka.Text).UniqueResult<Car>();

res.Model = tbModel.Text;
res.Letnik = Int32.Parse(tbLetnik.Text);

m_Session.Update(res);
tx.Commit();

tbOutput.Text = "Updated: " + System.Environment.NewLine + "Brand: " + res.Znamka
+ System.Environment.NewLine + "Model: " + res.Model
+ System.Environment.NewLine + "Year: " + res.Letnik;

}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}


}


//Delete:
private void btBrisi_Click(object sender, EventArgs e)
{
try
{
ITransaction tx = m_Session.BeginTransaction();
IQuery query = m_Session.CreateQuery("from Car d where d.Znamka = ?");
Car res = query.SetString(0, tbZnamka.Text).UniqueResult<Car>();

m_Session.Delete(res);
tx.Commit();

tbOutput.Text = "Deleted: " + System.Environment.NewLine + "Brand: " + res.Znamka
+ System.Environment.NewLine + "Model: " + res.Model
+ System.Environment.NewLine + "Year: " + res.Letnik;

}
catch (Exception ex)
{
tbOutput.Text = ex.Message;
ResetSession();
}
}
}
}
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:32    Naslov sporočila: Odgovori s citatom

Cars.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate.Mapping.Attributes;


namespace vaja12.Entity
{
[Serializable] //[...] = anotacije
[Class(Schema = "test", Table = "Vozilo", NameType = typeof(Car))]

class Car
{
[Id(Name = "Id", Column = "ID", Type = "int"), Generator(1, Class = "native")]

public virtual int Id { get; set; } //lazy loading

[Property(Column = "Brand", Type = "string", NotNull =true, Length = 128, Unique =true)]
public virtual string Znamka { get; set; }

[Property(Column = "Model", Type = "string", NotNull = true, Length = 512)]
public virtual string Model { get; set; }

[Property(Column = "Year", Type = "int")]
public virtual int Letnik { get; set; }

}
}
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
seesharp
Administrator foruma


Pridružen/-a: 27.06. 2017, 18:40
Prispevkov: 43

PrispevekObjavljeno: 28 Jun 2017 12:37    Naslov sporočila: Odgovori s citatom

dodamo dateoteke:
log4net.dll
MySql.Data.dll
NHibernate.Mapping.Attribute.dll
NHibebernate.dll
lesi.Collection.dll
nhibernate-configuration.xsd
nhibernate-mapping.xsd

v datoteko
App.Config
dodamo:


<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MySQLDialect</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="use_proxy_validator">true</property>
<property name="connection.connection_string">Server=localhost;Database=test;User ID=root;Password=;Port=3306</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>

<log4net>
<appender name="DebugSQL" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="HibernateLogFile" type="log4net.Appender.RollingFileAppender">
<file value="hibernate_log.txt"/>
<appendToFile value="false"/>
<encoding value="utf-8"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>

<appender name="HibernateSQLLogFile" type="log4net.Appender.RollingFileAppender">
<file value="hibernateSQL_log.txt"/>
<appendToFile value="false"/>
<encoding value="utf-8"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>

<!--
<root>
<level value="DEBUG" />
<appender-ref ref="DebugSQL" />
</root>
-->

<logger name="NHibernate">
<level value="DEBUG" />
<appender-ref ref="HibernateLogFile" />
</logger>

<logger name="NHibernate.SQL">
<level value="DEBUG" />
<appender-ref ref="HibernateSQLLogFile" />
</logger>

</log4net>
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    c# Seznam forumov -> iseesharp Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu


MojForum.si - brezplačno gostovanje forumov. Powered by phpBB 2.