Also falls es jemanden interessiert wie das mit Reflection so ungef�hr geht:
Ich hab die Datenklassen so gebastelt:
---------
namespace Programm
{
/// <summary>
/// Zusammenfassung f�r Arzneimittel.
/// </summary>
[DbTableAttribute("tb_Artikel")]
public class Artikel : DbObject
{
[DbFieldAttribute(OleDbType.VarChar,"PZN")]
public string PZN = "";
---------
damit kann ich via Reflection nachher rausfinden, zu welcher Tabelle das
Teil geh�ren soll und welches Feld dazu passt.
Die Collections habe ich so gebastelt:
----------
/// <summary>
/// Zusammenfassung f�r ArtikelCollection.
/// </summary>
[DbCollectionItemAttribute(typeof(Artikel))]
[DbTable("tb_Artikel")]
public class ArtikelCollection : DbCollection
-----------
Damit habe ich die Tabelle welche die Collectionitems enth�lt und den Typ
des "Items"
Und die DB ungef�hr so, ist zwar nicht so sch�n aber f�rs Erste hat es
geklappt:
public bool Load(object o, int ID)
{
// Datenbankverbindung herstellen
OleDbConnection conn = this.GetConnection();
if (conn == null) return false;
// Tabelle abfragen
DbTableAttribute tableAttribute =
(DbTableAttribute)(o.GetType().GetCustomAttributes(typeof(DbTableAttribute),
true)[0]);
OleDbCommand c = new OleDbCommand("SELECT * FROM " +
tableAttribute.Table + " WHERE [ID] = @ID", conn);
c.Parameters.Add("@ID",ID);
// Daten in Objekt �bertragen
OleDbDataReader r = c.ExecuteReader();
if (r.Read() )
{
FieldInfo [] fields =
o.GetType().GetFields();
foreach (FieldInfo f in fields)
{
object [] attributes =
f.GetCustomAttributes(typeof(DbFieldAttribute),true);
if (attributes.Length != 0)
{
DbFieldAttribute attribute =
(DbFieldAttribute)(attributes[0]);
object daten =
r[attribute.DataField];
if (daten == DBNull.Value &&
attribute.OleDbType == OleDbType.VarChar)
{
f.SetValue(o,"");
}
else if (daten ==
DBNull.Value && attribute.OleDbType == OleDbType.Integer)
{
f.SetValue(o,"-1");
}
else if (daten ==
DBNull.Value && attribute.OleDbType == OleDbType.Boolean)
{
f.SetValue(o,false);
}
else
{
f.SetValue(o,r[attribute.DataField]);
}
}
}
conn.Close();
return true;
}
else
{
conn.Close();
return false;
}
}
_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net