Я использовал SqlCacheDependency, чтобы привести свою базу данных, но это медленно - PullRequest
0 голосов
/ 28 апреля 2019

Я написал код для переноса моей базы данных и сохранения его в cahce SqlCacheDependency в событии загрузки, и когда я хочу получить его, требуется много времени. База данных имеет двоичный файл var, и он большой

У меня есть кнопка для загрузкивсе в кеше.Я не знаю, почему требуется много времени, которое сохраняется в кеше?

protected void Page_Load(object sender, EventArgs e)
    {
if (!IsPostBack)
        {
if (Cache["ProductDbperPage"] == null)
            {
Product Viewall = new Product();
Viewall.NumofRows = numNewValue;
DataSet ds = new DataSet();
ds = Viewall.ViewAllProduct();
SqlCacheDependency sqldependency = new SqlCacheDependency("ASPNETDB", "Product");
Cache.Insert("ProductDbperPage", ds, sqldependency);

            }
}    ```

Это для загрузки, когда я нажимаю кнопку:

if (Cache["ProductDbperPage"] != null)
                        {
 DataSet ds = new DataSet();
ds = (DataSet)Cache["ProductDbperPage"];
DatalistImageProduct.DataSource = ds;
DatalistImageProduct.DataBind();
                        }

Product.cs:

public DataSet ViewAllProduct()
    {
SqlConnection con = new SqlConnection(connection());
DataSet ds = new DataSet();
try
{

SqlCommand cmd = new SqlCommand("ViewAllProduct", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@status", true);
cmd.Parameters.AddWithValue("@num", NumofRows);

System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications
(connection());

System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications
(connection(), "Product");
           // 
System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications
(connection(), "tblimage");

            SqlDataAdapter ad = new SqlDataAdapter(cmd);


            ad.Fill(ds);
            return ds;
        }
        catch (Exception ex)
        {

            //throw;
            return ds;

        }


    }

И эта хранимая процедура ALTER PROCEDURE [dbo]. [ViewAllProduct]

@status bit ,
@num int

 AS
begin
SELECT Top(@num)  tblimage.image,Product.Start_Date AS DateBefore, 
Product.ProductName, Product.PUID
FROM tblimage INNER JOIN Product ON tblimage.PUID = 
Product.PUID 
where status=@status and tblimage.imageid=(select top 1 imageid from 
tblimage where puid=Product.puid) 
order by Product.Start_Date Desc 

Веб-сайт выводит все изображения (varbinary (MAX)) и показывает их пользователю

end

Я хочу сделать это быстро Вы можете помочь мне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...