none
VS2012 ASP.Net MVC+EntityFramework 5遇到的一点问题 RRS feed

  • 问题

  • 怎么说呢,有点难受啊

    装上VS2012,直接用ASP.Net MVC4创建个项目,模板内容挺全面的,可是用起来问题就多了

    1. LINQ,其实是asp.net mvc绑定DropdownList那个SelectList的问题

    如:SelectList.Single(item=>item.value=="Test").Selected=true;

    完了吧,本来很简单的一句,但结果是Selected没有改变,也没有Exception,嗯,是Linq问题不,不会吧,改成Foreach循环试试,那句能执行的,但是值不变,也没有Exception,MVC中的问题吧,是Bug不?

    2. EntityFramework,在任何一个Action中调用一下静态方法,在静态方法中实例化一下DbContext,嘿嘿,问题就出来了,如下示:

    类型“System.Data.Objects.ObjectContext”在未被引用的程序集中定义。必须添加对程序集“System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用

    累啊,全程中是用WebMatrix的WebSecurity进行的安全检查,我是仿那个想来个静态方法,嗯,就出来这问题了,看来WebMatrix没用EntityFramework,或者是。。。什么呢,我也想不出来了

    3.  还是静态方法,静态属性的问题,在任何页面代码中访问静态方法、静态属性、扩展方法都出现问题,嗯,不是全部,是你的代码与页面在一个项目中,也就是当前的Web项目中的时候,出现二义性错误,错误信息很长,其实的意思就是,项目DLL中与App_Code(或是临时目录预编译代码)中出现了同一签名的方法,唉,分明是同一个东东,咋就生出来两份呢?

    4. AuthorizeAttribute貌似也有点问题,还是由那个模板扩展的,重写了这个类,并且在其中验证Session中存储的用户信息的问题,如果先访问Authorize,没有任何问题,但是如果直接点登录访问LoginAction,则Action中的Session与Authorize中的Session不同了,不是同一个,嗯,这点我没弄明白,Authorize是,即使加上SessionStateBehavior.Required也不行,哪怕是Controller中和Authorize中都加上,我感觉奇怪的是,既然先Authorize的Session能传导到Controller,为什么反向就传导不过去了呢,郁闷啊

    这些算不算Bug呢,或者是我理解有错??

    联系到第4点的时候,我就总在想,为什么IIdentity接口中,不能提供一个类似Session.Items 的集合呢,IIdentity是可以用来判断当前用户的登录状态,可是它也太简单了点啊,嗯,我们可以扩展它,但问题是系统内置的安全模型中都只实现了IIdentity,而不是实现我们扩展的接口啊,扩展方法?维护起来不是更麻烦,与用静态集合无异了吧?用户信息肯定是实例化的,而且肯定得随着用户出现与消失而产生与销毁, 不是得从IIdentity开始实现起,把Framework中的安全模型全部重新来一遍吧,嗯,我这么说的目标是希望通过IIdentity就能访问我们所需要的用户信息,不管你是WindowsIdentity或是WebIdentity,貌似还有很多其它的Identity啊,其实如果它哪怕只是多一个Collection就很好了啊,为什么就没有呢?为什么就不能有呢,从1.0到4.5了啊


    • 已编辑 Corny 2012年10月3日 13:12 补充点内容
    2012年10月3日 12:59