/// <summary> /// 根据实体元数据Id和备用关键字名称查询备用关键字 /// </summary> /// <param name="infoId"></param> /// <param name="name"></param> /// <returns></returns> public async Task <EntityInfoAlternateKey> QueryByEntityInfoIdAndName(Guid infoId, string name) { EntityInfoAlternateKey info = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _entityMetadataConnectionFactory.CreateReadForEntityMetadata(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"SELECT {0},{1} FROM [EntityInfoAlternateKey] AS ekey INNER JOIN [EntityInfo] AS info ON ekey.[entityinfoid] = info.[id] WHERE info.[id] = @infoid AND ekey.[name] = @name;", StoreHelper.GetEntityInfoAlternateKeySelectFields("ekey"), StoreHelper.GetEntityInfoSelectFields("info")) }) { var parameter = new SqlParameter("@infoid", SqlDbType.UniqueIdentifier) { Value = infoId }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@name", SqlDbType.NVarChar, 256) { Value = name }; commond.Parameters.Add(parameter); commond.Prepare(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { info = new EntityInfoAlternateKey(); StoreHelper.SetEntityInfoAlternateKeySelectFields(info, reader, "ekey"); info.EntityInfo = new EntityInfo(); StoreHelper.SetEntityInfoSelectFields(info.EntityInfo, reader, "info"); } await reader.CloseAsync(); } } }); return(info); }
/// <summary> /// 为实体元数据备用关键字赋值 /// </summary> /// <param name="queue"></param> /// <param name="reader"></param> /// <param name="prefix"></param> public static void SetEntityInfoAlternateKeySelectFields(EntityInfoAlternateKey metadata, DbDataReader reader, string prefix) { metadata.ID = (Guid)reader[string.Format("{0}id", prefix)]; if (reader[string.Format("{0}name", prefix)] != DBNull.Value) { metadata.Name = reader[string.Format("{0}name", prefix)].ToString(); } if (reader[string.Format("{0}entityinfoid", prefix)] != DBNull.Value) { metadata.EntityInfoId = (Guid)reader[string.Format("{0}entityinfoid", prefix)]; } if (reader[string.Format("{0}createtime", prefix)] != DBNull.Value) { metadata.CreateTime = (DateTime)reader[string.Format("{0}createtime", prefix)]; } if (reader[string.Format("{0}modifytime", prefix)] != DBNull.Value) { metadata.ModifyTime = (DateTime)reader[string.Format("{0}modifytime", prefix)]; } }