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)); } }
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)); } } }
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); } }
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); }
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; } }