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

Antwort per Email an