现在的位置: 首页 > 综合 > 正文

c#开发经验记录

2013年03月06日 ⁄ 综合 ⁄ 共 1765字 ⁄ 字号 评论关闭

1、当创建一个类验证是否登陆时,其它页面继承该类时,出现错误。

public class LoinedPage:System.Web.UI.Page
{
	public LoinedPage()
	{
        var aa=Session["dd"];
	}
}

public partial class LoginCheck : LoinedPage {     protected void Page_Load(object sender, EventArgs e)     {

    } }

例外詳細資訊: System.Web.HttpException: 只有在組態檔或 Page 指示詞中將 enableSessionState 設為 true 時,才能使用工作階段狀態。同時請確定 System.Web.SessionStateModule 或自訂工作階段狀態模組已包括在應用程式組態的 <configuration>\<system.web>\<httpModules> 區段中。

原因:var aa=Session["dd"];需要用到Session,但是当生成该类时,还无法使用Session,所以会报错。应该将其放到LoginedPage类的Page_Load方法中,因为页面生命周期在Page_Load中就可以使用了。

 

 2、在Sql Server2008中附加数据库,失败。提示无法打开物理文件 "E:\db\homework.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)

解决方法:将该数据库文件所在的文件夹权限改为User组为完全控制权限即可。

 

3、登陆检查代码不要写在检查类中的Page_Load方法中,因为若写在Page_Load中,在页面中的Page_Load方法会将父类中的Page_Load方法冲掉。可以将登陆检查代码写到PreLoad事件中。 

public class LoginedPage : System.Web.UI.Page
{
	public LoginedPage()
	{
		//
		//TODO: 在此处添加构造函数逻辑
		//
        PreLoad += OnLineCheck;
	}
    public void OnLineCheck(object sender, EventArgs e)
    {
        if (Session["userObj"] == null)
        {
            //Response.Redirect("index.htm");
        }       
    
    }
}
public partial class ml : LoginedPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

4、在使用Linq时,出现此提示: {"LINQ to Entities 不支援方法 'Single'。請考慮改用方法 'First'。"} 。经查询发现是Linq To Entities为了保证和其它数据库兼容,所以不支持Single方法,此时可以用First<>进行替换。

    protected void Button2_Click(object sender, EventArgs e)
    {
        testdbModel.testdbEntities1 te = new testdbModel.testdbEntities1();
        var lin = (testdbModel.T_Keywords)((from t in te.T_Keywords where t.ID == 6 select t).FirstOrDefault<testdbModel.T_Keywords>());
        if (lin != null)
        {
             lin.Keyword = "修改了"+DateTime.Now.ToString();
            te.SaveChanges();
            ListView1.DataBind();
        }
    }

5、Linq执行数据库操作时,不会立加载到内存中。调用AsEnumerable<>、ToList<>、ToArray<>后,则会立即执行。

var linq=(from t in te.T_Keywords where t.ID == 6 select t).AsEnumerable<testdbModel.T_Keywords>().ToArray<testdbModel.T_Keywords>().ToList<testdbModel.T_Keywords>();

 

 

 

 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.