• 知识点随笔记录一


    一、EF使用导航属性表关联,除了在Entity中以注解属性以及字段名默认约定设置外,还要在Controller的Action方法中用linq加载关联数据(Lazy loading、Eager loading、Explicit loading);
    当然,如果项目中不用导航属性,那就用不着这些了。

    二、待总结:windows服务;
    三、linq  left join ,right join

    四、MVC路由配置要点
        (规则:少了可以匹配,多了不能匹配)
        1,使用默认值
        2,使用静态URL片段
        3,自定义片段变量
        3.1,用自定义变量作为动作方法参数(模型绑定)
        4,定义可选URL片段
        5,定义可变长路由

        6,通过指定命名空间来设置路由顺序(如:多个项目时解决命名冲突)
           设置路由顺序还有另一种方法:路由全局优先级(Global优先级),如:

         注:Global优先级会被路由优先级重写。
     

        7,约束路由(对默认路由的controller和action用正则表示,以便更加精确地指定controller和action的值)
        8,对文件进行路由(以改变访问某一个文件得到的结果),如图像、html文件、js文件、等。
        但是,处于性能考虑,不推荐这种做法。
        9,绕过路由系统:
        routes.IgnoreRoute("Content/{filename}.html");
        
    五、(数据访问层设计)数据访问层的4个职责:
        1,CRUD
        2,Query
        3,Transaction Management满足事务性需求
        4,Concurrency合理地处理并发问题。

    六、如果是不严格按照DDD是设计上来说,返回IQueryable<T>的泛型仓储的确是无敌的,但是IQueryable<T>是返回查询分析器,不是结果。
    七、关于EF Repository Context:
    我选用了EF Code First作为ORM,实现了仓储(Repository)和仓储上下文(Repository Context),先来看看Repository Context。从技术实现角度分析,基于EF Code First的Repository Context封装了DbContext,这跟上文中的分析是一致的,从设计和框架应用的角度分析,基于EF Code First的Repository Context需要实现IRepositoryContext的接口,以便当服务定位器在解析并提供IRepositoryContext类型实例的时候,能够返回我们的EF Repository Context。

    八、强类型的辅助方法,加For

    九、使用Partial View有两类helper:
    Html.Partial / Html.RenderPartial
    Html.Action / Html.RenderAction

    通过Html.Action/Html.RenderAction使用稍微复杂一点,分成两步。
    在要显示的View所对应的Controller中心增加一个Action.
    还用上面这个页面,我们在MVCDemoController.cs中增加一个Action
    做个简单的说明:
    [ChildActionOnly] 表示这个Action只应作为子操作进行调用。也就是说直接通过 controller/action这样的网址是不能访问的,会提示只能由子请求访问的错误。
    必须返回一个PartialView
    在View中添加相关代码

    十、两种使用方式小结
    当View中引用了一个或多个分部视图时,此View与各分部视图默认得到一样的数据,也就是说View及其中所有的Partial View默认情况下共享View中的ViewData和ViewBag.
    需要使View和其中引入的Partial View有不同的数据,需要通过Html.Action/Html.RenderAction辅助方法, 并在对于被调用的Action中设置对应的数据。

    另外还有几点需要注意:
    XXX和RenderXXX的区别在于,一个是直接返回字符串,另外一个是直接写入到相应输出流,因此不能直接放在代码表达式中,必须放在代码块中。
    前面的示例中两种写法是等价的。RenderXXX有轻微的性能优势,在大量的RenderXXX运行时,才能反映出性能上的优势。
    Partial/RenderPartial通常在单独的文件夹中应用视图标记来帮助View渲染视图模型的一部分。
    Action/RenderAction执行单独Controller中的Action来显示结果,提供了更多的灵活性,例如利用单独的Controller传递不同值。文章最后我们会举个例子说明。
    Partial/RenderPartial和Action/RenderAction的参数分别是 partialView和 Action的名字。当然还有其他的重载函数,我们只说最常用的。

    十一、linq to sql要点:
    1、Not Contains则取反:
        var q = (
            from o in db.Orders
            where !(
            new string[] { "AROUT", "BOLID", "FISSA" })
            .Contains(o.CustomerID)
            select o).ToList();
    2、包含一个对象:
        var order = (from o in db.Orders
                     where o.OrderID == 10248
                     select o).First();
        var q = db.Customers.Where(p => p.Orders.Contains(order)).ToList();
        foreach (var cust in q)
        {
            foreach (var ord in cust.Orders)
            {
                //do something
            }
        }
        语句描述:这个例子使用Contain查找哪个客户包含OrderID为10248的订单。
    3、包含多个值:
        string[] cities =
            new string[] { "Seattle", "London", "Vancouver", "Paris" };
        var q = db.Customers.Where(p=>cities.Contains(p.City)).ToList();
        语句描述:这个例子使用Contains查找其所在城市为西雅图、伦敦、巴黎或温哥华的客户。

  • 相关阅读:
    SD_WebImage-03-多线程+下载任务放入非主线程执行
    NSOperationQueue_管理NSOperation-02-多线程
    CALayer小结-基本使用00-UI进阶
    XMPP-UI进阶-01
    XMPP总结-UI进阶-00
    UI控件总结-UI初级
    转场动画-01-day4
    暂停-开始动画-核心动画-08-day4
    核心动画-04-CALayer隐式动画
    Android开发技术周报 Issue#71
  • 原文地址:https://www.cnblogs.com/zhaow/p/9753964.html
Copyright © 2020-2023  润新知