Soci (Soczó Zsolt) szakmai blogja

2010.04.20.

Entity Framework 4 többrétegű appokban

Filed under: .NET,.NET 4,Adatbázisok,ADO.NET,Entity Framework,Szakmai élet — Soczó Zsolt @ 22:45

Játszottam kicsit az EF4-gyel. Az alábbi kód egy n rétegű app adatmozgását szimulálja a WCF xml szerializálóját használva. Mindhárom template-tel kipróbáltam, alább láthatóak az adatmozgások.
A tesztkód messze nem korrekt, de kiindulópontként további vizsgálatokhoz elfogatható:

[source=’c#’]
using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;

namespace POCO1
{
class Program
{
static void Main()
{
Department d;
using (var e = new SchoolEntities())
{
e.ContextOptions.ProxyCreationEnabled = false;
e.ContextOptions.LazyLoadingEnabled = false;
d = e.Departments.Include(“Courses”).Single(dep => dep.DepartmentID == 1);
Console.WriteLine(“{0}”, d.Name);
Console.WriteLine(“———————“);
foreach (Course c in d.Courses)
{
Console.WriteLine(“{0}”, c.Title);
}
e.Detach(d);
}

var ser = new DataContractSerializer(d.GetType());
//var ser = new DataContractSerializer(d.GetType(),
//null, 50000, true, true, null, new ProxyDataContractResolver());

using (var s2c = new FileStream(@”c:\temp\Server2Client.xml”, FileMode.Create, FileAccess.ReadWrite))
{
//1. Server küld kliensre
ser.WriteObject(s2c, d);
s2c.Position = 0;
//2. Kliens deserializál
var clientSideDep = (Department)ser.ReadObject(s2c);

//Csak ST
//bool ce = clientSideDep.ChangeTracker.ChangeTrackingEnabled;

//3. Kliens módosít
clientSideDep.Name += “a”;

using (var c2s = new FileStream(@”c:\temp\Client2Server.xml”, FileMode.Create, FileAccess.ReadWrite))
{
//4. Kliens visszaküld
ser.WriteObject(c2s, clientSideDep);
c2s.Position = 0;

//5.Server deserializál
var sentBackDepartment = (Department)ser.ReadObject(c2s);
using (var e = new SchoolEntities())
{
//6. Server visszamódosít

//Normál entitás
e.Departments.Attach(sentBackDepartment);
e.ObjectStateManager.GetObjectStateEntry(sentBackDepartment).SetModified();
e.ObjectStateManager.GetObjectStateEntry(sentBackDepartment).SetModifiedProperty(“Name”);

//POCO
//e.Departments.Include(“Courses”).Single(dep => dep.DepartmentID == 1);
//e.Departments.ApplyCurrentValues(sentBackDepartment);

//Self-tracking entity
//e.Departments.ApplyChanges(sentBackDepartment);

e.SaveChanges();
}
}
}
}
}
}
[/source]

EF alapobjektumok szerviz => kliens:
[source=’xml’]


SchoolEntities


DepartmentID
1


Departments

2
350000.0000

1
Engineering
2007-09-01T00:00:00

[/source]

EF alapobjektumok kliens => szerviz:
[source=’xml’]


SchoolEntities


DepartmentID
1


Departments

2
350000.0000

1
Engineeringa
2007-09-01T00:00:00

[/source]

POCO szerviz => kliens:
[source=’xml’]

2
350000.0000

1
Engineeringa
2007-09-01T00:00:00

[/source]

POCO kliens => szerviz:
[source=’c#’]

2
350000.0000

1
Engineeringaa
2007-09-01T00:00:00

[/source]

Self-tracking entity, szerviz => kliens:
[source=’xml’]

2
350000.0000





Unchanged


1
Engineeringaaaaaaaa
2007-09-01T00:00:00

[/source]

Self-tracking entity, kliens => szerviz:
[source=’xml’]

2
350000.0000





Modified


1
Engineeringaaaaaaaaa
2007-09-01T00:00:00

[/source]

Érdekes, hogy a módosítás ténye csak a ST-ben látszik, még az eredeti entity-sben sem. A POCO-tól nem is vártuk persze.
Később még majd foglalkozok bővebben a témával. Aki játszani akar vele, hozza létre a School EF példaadatbázist, azon lehet futtatni.

2010.04.13.

A tegnapi SQL Server 2008 R2 előadásom anyagai

Filed under: .NET,Adatbázisok,SQL Server 2008 R2,Szakmai élet — Soczó Zsolt @ 16:35

Többen kérdeztétek, pptben benne vannak a linkek a térképes demóm adataihoz és a konverziós eszközökhöz is.
Mellékeltem még a Running Aggregate SQL és CLR példát (kurzorral is, azt nem mutattam), a trade riportot az új chartocskákkal.
Letöltés innen (4 M).

VS 2010 RTM elérhető az MSDN-en

Filed under: .NET,.NET 4,Szakmai élet,Visual Studio — Soczó Zsolt @ 07:17

És végre gyorsan jön, de lehet, hogy csak azért, mert alszanak még Amerikában.

2010.04.09.

Hétfőn választási eredmények vizualizálása a konferencián

Filed under: Szakmai élet — Soczó Zsolt @ 18:10

Hogy aktuális legyen a VS 2010 konferencián bemutatott térkép-riport demóm, a vasárnapi választási eredményeket fogom térképen megjeleníteni. Tisztán interneten elérhető adatforrásokat, térképeket felhasználva. Izgi már a demót is összerakni. Véleményt nem fogok nyilvánítani, úgyis ismert, kikre szavazok.
Az demóadatok generálását delegáltam pár millió embernek, köszönet mindenkinek, aki dolgozik majd rajta. :)

Powered by WordPress