예제 #1
0
        public virtual void Add(T item)
        {
            var cmdbuilder = CreateCommandBuilder();

            using (var insertcmd = cmdbuilder.GetInsertCommand(true))
            {
                var dic = _memberResolver.ConvertToDictionary(item);
                foreach (var kvp in dic)
                {
                    var t = kvp.Value.GetType();
                    if (!IsComplexType(t))
                    {
                        var param = insertcmd.Parameters.Cast <DbParameter>()
                                    .First(
                            p =>
                            p.ParameterName.ToLower() == kvp.Key.ToLower() ||
                            p.ParameterName.ToLower() == "@" + kvp.Key.ToLower());
                        param.Value = kvp.Value;
                        if (t == typeof(string))
                        {
                            param.Size = ((string)kvp.Value ?? "").Length;
                        }
                    }
                }
                insertcmd.Connection = _connection;
                if (insertcmd.Connection.State == ConnectionState.Closed)
                {
                    insertcmd.Connection.Open();
                }
                insertcmd.Prepare();
                insertcmd.ExecuteNonQuery();
            }
        }
예제 #2
0
        public virtual void Add(T item)
        {
            Dictionary <string, object> dic = _memberResolver.ConvertToDictionary(item);
            DataRow row = _dataTable.NewRow();

            foreach (var kvp in dic)
            {
                row[kvp.Key] = kvp.Value;
            }
            _dataTable.Rows.Add(row);
            if (AutoSave)
            {
                SaveChanges();
            }
        }
예제 #3
0
        public virtual void Add(T item)
        {
            var cmdbuilder = _providerFactory.CreateCommandBuilder();
            var insertcmd  = cmdbuilder.GetInsertCommand(true);
            var dic        = _memberResolver.ConvertToDictionary(item);

            foreach (var kvp in dic)
            {
                var t = kvp.Value.GetType();
                if (!IsComplexType(t))
                {
                    insertcmd.Parameters.Cast <DbParameter>()
                    .First(
                        p =>
                        p.ParameterName.ToLower() == kvp.Key.ToLower() ||
                        p.ParameterName.ToLower() == "@" + kvp.Key.ToLower())
                    .Value = kvp.Value;
                }
            }
            insertcmd.Connection = _connection;
            OpenIfClosed();
            insertcmd.Prepare();
            insertcmd.ExecuteNonQuery();
        }
예제 #4
0
 protected override FooModel GetItemById(long id)
 {
     using (var conn = NewConnection())
     {
         var cmdtext  = "SELECT * FROM FooModel WHERE ID = @ID";
         var cmd      = new SqlCommand(cmdtext, conn);
         var dr       = cmd.ExecuteReader();
         var hydrator = new EntityMemberResolver <FooModel>();
         dr.Read();
         var item = new FooModel();
         hydrator.HydrateFromDictionary(item,
                                        hydrator.ConvertToDictionary(dr));
         return(item);
     }
 }
예제 #5
0
        public DataTableDataStore()
        {
            _memberResolver = new EntityMemberResolver <T>();
            _dataTable      = new DataTable(typeof(T).Name);
            _dataTable.BeginInit();
            Dictionary <string, object> props = _memberResolver.ConvertToDictionary(Activator.CreateInstance <T>());

            foreach (var prop in props)
            {
                var column = new DataColumn(prop.Key, _memberResolver.PropertyType(prop.Key));
                if (_memberResolver.IsAutoIdentity(prop.Key))
                {
                    column.AutoIncrement = true;
                }
                _dataTable.Columns.Add(column);
            }
            _dataTable.EndInit();
            AutoSave = true;
        }
예제 #6
0
        public void Update(T item)
        {
            var matchingItem = Get(item);

            _memberResolver.HydrateFromDictionary(matchingItem, _memberResolver.ConvertToDictionary(item));
        }
 protected override FooModel GetItemById(long id)
 {
     using (var conn = NewConnection())
     {
         var cmdtext = "SELECT * FROM FooModel WHERE ID = @ID";
         var cmd = new SqlCommand(cmdtext, conn);
         var dr = cmd.ExecuteReader();
         var hydrator = new EntityMemberResolver<FooModel>();
         dr.Read();
         var item = new FooModel();
         hydrator.HydrateFromDictionary(item,
             hydrator.ConvertToDictionary(dr));
         return item;
     }
 }