Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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)];
            }
        }