对于我在我的天蓝云中工作的网站,我需要实现“混合”缓存。
意思是,我的网站显示来自某个数据库的记录表,并提供添加新记录或更新现有记录的选项。对于读取,我需要实现进程内缓存,对于写入(添加,更新),我需要进行进程外缓存。
我是C#和azure的新人。我很乐意从一开始就得到一些帮助......
目前,我使用简单的sql命令来显示,添加或更新:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
GridView1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
string InsertCommand = "INSERT INTO [Students] ([Student_Name], [GPA]) VALUES (@Student_Name, @GPA)";
string connString = SqlAzureDataSource.ConnectionString;
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
comm.CommandText = InsertCommand;
comm.Parameters.AddWithValue("@Student_Name", TextBox1.Text);
comm.Parameters.AddWithValue("@GPA", TextBox2.Text);
try
{
conn.Open();
comm.ExecuteNonQuery();
this.DataBind();
}
catch (SqlException ex)
{
Console.WriteLine(ex.StackTrace);
}
}
}
}
// Similar for UPDATE
我会感激任何给予的帮助
谢谢
答案 0 :(得分:2)
Link关于如何使用Azure缓存。以下是Windows Server AppFabric
上的链接从架构上讲,缓存必须在SQL Query之上实现一个级别。
顺便说一句,如果您是C#的新用户并正在开发基于网络的应用,我建议您查看Entity Framework,一个不错的MVVM pattern,也许可以使用ASP MVC。单独的实体框架将为您节省大量时间,代码将更易于维护。
修改强>
将项目添加到缓存的正确方法 - 这是一个示例。我们假设您有一个名为Employees的表。 您可以创建数据集并将查询结果填入该数据集。您可以将其保存在缓存中。
再次,请参阅实体框架,这将允许您轻松地执行此操作。基于上面的示例,EF将允许您在C#中创建一个Employee类,并将查询结果填入该类。
两种情况下的缓存代码都位于SQL Query之上。因此,使用GetEmployeeDetails()作为方法创建一个单独的类。发出对getEmployeeDetails()的调用,该调用命中缓存以查看数据是否存在。如果没有,它就会命中SQL。
将所有内容从page_load移到自己的类中。