Entityframework:启用延时加载的主意事项(只为强化记忆)
Check List
- 无参的、高于私有访问级别的构造方法(经常忘记)。
- 非封闭的类(默认的非封闭的)。
- DbContext 配置要开启(默认是开启的)。
因为我喜欢将类型设置为封闭的,提供有参数的构造方法,尽可能的低的访问级别,而这些原则和延时加载的原则刚好相反,因此写下来强化一下记忆。
示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using Happy.Archetype;
using Happy.Domain;
using Happy.Cms.Domain.Shares; namespace Happy.Cms.Domain.Articles
{
[DomainModel, Moment]
public class Article : AggregateRoot<Guid>
{
private ICollection<AssignedTag> _assignedTags = new List<AssignedTag>(); protected Article()
{
} public Article(Guid id)
: base(id)
{
this.SettingInfo = new SettingInfo();
this.ImageInfo = new ImageInfo();
this.SeoInfo = new SeoInfo();
} public string Title { get; set; } public Guid CategoryId { get; set; } public string Author { get; set; } public ImageInfo ImageInfo { get; private set; } public SettingInfo SettingInfo { get; private set; } public virtual ICollection<AssignedTag> AssignedTags
{
get { return _assignedTags; }
protected set { _assignedTags = value; }
} public string Content { get; set; } public SeoInfo SeoInfo { get; private set; } public void AssignTags(IEnumerable<Guid> tagIds)
{
tagIds = tagIds ?? Enumerable.Empty<Guid>(); var oldAssignedTagIds = this.AssignedTags.Select(x => x.TagId).ToList();
var addedTagIds = tagIds.Except(oldAssignedTagIds);
var removedTagIds = oldAssignedTagIds.Except(tagIds); foreach (var addedTagId in addedTagIds)
{
this.AssignedTags.Add(new AssignedTag(Guid.NewGuid(), addedTagId));
} foreach (var removedTagId in removedTagIds)
{
this.AssignedTags.Remove(this.AssignedTags.First(x => x.TagId == removedTagId));
}
}
}
}
Entityframework:启用延时加载的主意事项(只为强化记忆)的更多相关文章
- ionic 上拉加载更多&瀑布流加载&滚动到底部加载更多 主意事项
首先下拉刷新的代码是这样的,标红的地方为关键代码 <html> <head> <meta charset="utf-8"> <meta n ...
- JAVA的单例模式与延时加载
延迟加载(lazy load)是(也称为懒加载),也叫延迟实例化,延迟初始化等,主要表达的思想就是:把对象的创建延迟到使用的时候创建,而不是对象实例化的时候创建.延迟加载机制是为了避免一些无谓的性能开 ...
- MyBatis入门(五)---延时加载、缓存
一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ****** ...
- 一段实现页面上的图片延时加载的js
大家如果使用firebug去查看的话就会发现,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对于比较 ...
- WinForm的延时加载控件概述
这篇文章主要介绍了WinForm的延时加载控件,很实用的技巧,在C#程序设计中有着比较广泛的应用,需要的朋友可以参考下 本文主要针对WinForm的延迟加载在常用控件的实现做简单的描述.在进行C# ...
- picLazyLoad 图片延时加载,包含背景图片
/** * picLazyLoad 图片延时加载,包含背景图片 * $(img).picLazyLoad({...}) * data-original 预加载图片地址 * alon */ ;(func ...
- iOS 延时加载
这里列举了四种线程延时加载的方法, 1.performSelector方法 此方法必须在主线程中执行,并不是阻塞当前的线程 [self performSelector:@selector(delayM ...
- js实现网页图片延时加载的原理和代码 提高网站打开速度
有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对 ...
- [整理]DLL延时加载 && 设置进程私有环境变量
DLL延时加载鉴于静态和动态加载之间,即无需在代码中显示加载但它内队依然是动态加载的方式只是系统帮处理了.这样做好处是: 1. 可以加快启动时间(因为它是动态加载在需要的时间加载), 2. 减小编写L ...
随机推荐
- 题解-python-CodeForces 227B
用hash解决.我python代码消耗很多内存,好在代码比C++短很多 n = int(raw_input()) mylist = raw_input().split(' ') i = 0 zid = ...
- centos7 vnc 无法systemctl启动
1.centos7 vnc 无法systemctl启动 报错如下:Failed to start Remote desktop service (VNC) 2.解决办法 错误服务脚本名 vncserv ...
- Html5和Css3扁平化风格网页
前言 扁平化概念的核心意义 去除冗余.厚重和繁杂的装饰效果.而具体表现在去掉了多余的透视.纹理.渐变以及能做出3D效果的元素,这样可以让“信息”本身重新作为核心被凸显出来.同时在设计元素上,则强调了抽 ...
- USACO 6.5 All Latin Squares
All Latin Squares A square arrangement of numbers 1 2 3 4 5 2 1 4 5 3 3 4 5 1 2 4 5 2 3 1 5 3 1 2 4 ...
- 牛客练习赛1 B - 树
链接:https://www.nowcoder.com/acm/contest/2/B来源:牛客网 题目描述 shy有一颗树,树有n个结点.有k种不同颜色的染料给树染色.一个染色方案是合法的,当且仅当 ...
- volatile 和锁的内存语义
一.volatile 的内存语义 1. volatile 的特性 volatile变量自身具有以下特性: 可见性 :对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后 ...
- JAVA特性-跨平台/面向对象
JAVA特点概述 一,跨平台 这无疑是java最大的特点了,我相信大多数人第一次听说java语言大都从跨平台开开始的.实际上java跨平台特性主要体现在两个方面:编码和运行机制. 1,编码 java语 ...
- java-Excel导出中的坑
在Excel导出过程中,若遇到合并单元格样式只有第一行合并,而下面要合并的行没有边框显示. 一般问题出在将单元格样式设置与合并单元格放在同一个循环中导致. 以下为一个完整版的demo以供参考 定义边框 ...
- [leetcode greedy]134. Gas Station
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
- Visual Studio 2017强制更新方法
Visual Studio 2017强制更新方法 Visual Studio 2017更新时候,用户都是根据消息提示,进行更新.这样做的好处,就是微软可以分批下发升级包,避免集中更新.不过为了早点 ...