Пример #1
0
        public virtual T Get(params object[] key)
        {
            if (key == null)
            {
                key = new object[] {}
            }
            ;
            var cmdbuilder = _providerFactory.CreateCommandBuilder();
            var selectCmd  = cmdbuilder.DataAdapter.SelectCommand;
            var keymembers = _memberResolver.KeyPropertyMembers.ToArray();

            if (keymembers.Length != key.Length)
            {
                throw new ArgumentException("Key component count mismatch. Should match [Key] attribute count.", "key");
            }
            for (var i = 0; i < key.Length; i++)
            {
                var parameter = selectCmd.CreateParameter();
                parameter.ParameterName = keymembers[i].Name;
                parameter.Value         = key[i];
            }
            OpenIfClosed();
            selectCmd.Prepare();
            using (var result = selectCmd.ExecuteReader())
            {
                if (result.HasRows && result.Read())
                {
                    var dictionary = _memberResolver.ConvertToDictionary(result);
                    var item       = Create();
                    _memberResolver.HydrateFromDictionary(item, dictionary);
                    return(item);
                }
                return(default(T));
            }
        }
Пример #2
0
        public virtual T Get(params object[] key)
        {
            if (key == null)
            {
                key = new object[] {}
            }
            ;
            var cmdbuilder = CreateCommandBuilder();
            var selectCmd  = cmdbuilder.DataAdapter.SelectCommand;
            var keymembers = _memberResolver.KeyPropertyMembers.ToArray();

            if (keymembers.Length != key.Length)
            {
                throw new ArgumentException("Key component count mismatch. Should match [Key] attribute count.", "key");
            }
            for (var i = 0; i < key.Length; i++)
            {
                var parameter = selectCmd.Parameters.Cast <DbParameter>().First(p => p.SourceColumn.ToLower() == keymembers[i].Name.ToLower());
                parameter.Value = key[i];
            }
            var parameters = selectCmd.Parameters.Cast <DbParameter>().ToList();

            selectCmd.Parameters.PrepareParams();
            using (selectCmd.Connection)
            {
                if (selectCmd.Connection.State == ConnectionState.Closed)
                {
                    selectCmd.Connection.Open();
                }
                selectCmd.Prepare();
                using (var result = selectCmd.ExecuteReader())
                {
                    if (result.HasRows && result.Read())
                    {
                        var dic  = result.RowAsDictionary();
                        var item = Create();
                        _memberResolver.HydrateFromDictionary(item, dic);
                        return(item);
                    }
                    return(default(T));
                }
            }
        }
Пример #3
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);
     }
 }
Пример #4
0
        protected virtual T Hydrate(DataRow newRow)
        {
            if (newRow == null)
            {
                return(default(T));
            }
            T   ret = Create();
            var dic = new Dictionary <string, object>();

            foreach (DataColumn c in _dataTable.Columns)
            {
                dic[c.ColumnName] = newRow[c];
            }
            _memberResolver.HydrateFromDictionary(ret, dic);
            return(ret);
        }
Пример #5
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;
     }
 }