public SqlServerGenerator(Type entityType) { var metadata = new EntityMetadata(entityType); IsIdentity = metadata.FirstOrDefault(x => x.IsIdentity) != null; var selectFields = string.Join(", ", metadata.Select(i => $"{i.DbName} AS {i.Name}")); var insertFields = string.Join(", ", metadata.Where(i => !i.IsIdentity).Select(i => i.DbName)); var insertValues = string.Join(", ", metadata.Where(i => !i.IsIdentity).Select(i => $"@{i.Name}")); var updatePairs = string.Join(", ", metadata.Where(i => !i.IsPrimaryKey).Select(i => $"{i.DbName} = @{i.Name}")); var whereCondition = string.Join(" AND ", metadata.Where(i => i.IsPrimaryKey).Select(i => $"{i.DbName} = @{i.Name}")); SelectAllSql = $"SELECT {selectFields} FROM {metadata.DbName}"; SelectSql = SelectAllSql; if (whereCondition.Length > 0) SelectSql += $" WHERE {whereCondition}"; InsertSql = $"INSERT INTO {metadata.DbName} ({insertFields}) VALUES ({insertValues})"; if (IsIdentity) { InsertSql += Environment.NewLine; InsertSql += "SELECT SCOPE_IDENTITY()"; } UpdateSql = $"UPDATE {metadata.DbName} SET {updatePairs}"; if (whereCondition.Length > 0) UpdateSql += $" WHERE {whereCondition}"; DeleteAllSql = $"DELETE FROM {metadata.DbName}"; DeleteSql = DeleteAllSql; if (whereCondition.Length > 0) DeleteSql += $" WHERE {whereCondition}"; CountSql = $"SELECT COUNT(1) FROM {metadata.DbName}"; }