Vous êtes sur la page 1sur 3

A set of very simple generic data access classes in C# to set you off in the right direction: using using

using using using using System; System.Data; System.Data.SqlClient; System.Collections.Generic; System.Collections.ObjectModel; System.Data.SqlServerCe;

namespace DataAccessLayer { internal class DAL<T> where T : IEntity<T, IDataRecord> { public T Entity = default(T); public Collection<T> Entities = new Collection<T>(); public void GetSingleRow(T entity) { IDataReader myReader = null; IDbConnection mySqlConnection = new SqlConnection(@"Data Source=C:\Users\Administrator\Documents\Visual Studio 2010\Projects\DataAccessLayer\DataAccessLayer\App_Data\LocalData.sdf"); IDbCommand mySqlCommand = new SqlCommand("select * from customers"); mySqlCommand.Connection = mySqlConnection; try { mySqlConnection.Open(); myReader = mySqlCommand.ExecuteReader(); object[] values = new object[myReader.FieldCount]; myReader.GetValues(values); Entity = CreateMappingScalar(entity, values);

} catch (Exception e) { } finally { if (myReader != null) myReader.Close();

if (mySqlConnection.State == ConnectionState.Open) mySqlConnection.Close(); } }

public Collection<T> GetMany(T entity) { IDataReader myReader = null; IDbConnection mySqlConnection = new SqlCeConnection(@"Data Source=C:\Users\Administrator\Documents\Visual Studio 2010\Projects\DataAccessLayer\DataAccessLayer\App_Data\LocalData.sdf;"); IDbCommand mySqlCommand = new SqlCeCommand("select id, message from testtable"); mySqlCommand.Connection = mySqlConnection; try { mySqlConnection.Open(); myReader = mySqlCommand.ExecuteReader(); Entities = CreateMappingMany<T, IDataReader>(entity, myReader);

} catch (Exception e) { }

finally { if (myReader != null) myReader.Close(); if (mySqlConnection.State == ConnectionState.Open) mySqlConnection.Close();

} return Entities;

internal static Collection<T> CreateMappingMany<T, U>(IEntity<T, IDataRecord> entity, IDataReader reader) { return entity.MapMany(reader); } internal static T CreateMappingScalar(IEntity<T, IDataRecord> entity, object[] values) { } } } return entity.Map(values);

//---------------------------------------------------------------------------------------//The business layer


using using using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Collections.ObjectModel; System.Data; DataAccessLayer;

namespace BL { public class Class1 : IEntity<Class1, IDataRecord> { public int Id { get; set; } public string Message { get; set; } public Collection<Class1> GetMany() { DAL<Class1> dal = new DAL<Class1>(); return dal.GetMany(this); } public Class1 Map(object[] values) { Class1 cls = new Class1(); cls.Id = (int)values[0]; cls.Message = (string)values[1]; return cls; } public Collection<Class1> MapMany(IDataRecord reader) { IDataReader rd = (IDataReader)reader; Collection<Class1> col = new Collection<Class1>(); while (rd.Read())

} } }

} return col;

Class1 cls = new Class1(); cls.Id = (int)rd["Id"]; cls.Message = (string)rd["Message"]; col.Add(cls);

Vous aimerez peut-être aussi