zoukankan      html  css  js  c++  java
  • Entityframework:启用延时加载的主意事项(只为强化记忆)

    Check List

    • 无参的、高于私有访问级别的构造方法(经常忘记)。
    • 非封闭的类(默认的非封闭的)。
    • DbContext 配置要开启(默认是开启的)。

    因为我喜欢将类型设置为封闭的,提供有参数的构造方法,尽可能的低的访问级别,而这些原则和延时加载的原则刚好相反,因此写下来强化一下记忆。

    示例

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 using Happy.Archetype;
     8 using Happy.Domain;
     9 using Happy.Cms.Domain.Shares;
    10 
    11 namespace Happy.Cms.Domain.Articles
    12 {
    13     [DomainModel, Moment]
    14     public class Article : AggregateRoot<Guid>
    15     {
    16         private ICollection<AssignedTag> _assignedTags = new List<AssignedTag>();
    17 
    18         protected Article()
    19         {
    20         }
    21 
    22         public Article(Guid id)
    23             : base(id)
    24         {
    25             this.SettingInfo = new SettingInfo();
    26             this.ImageInfo = new ImageInfo();
    27             this.SeoInfo = new SeoInfo();
    28         }
    29 
    30         public string Title { get; set; }
    31 
    32         public Guid CategoryId { get; set; }
    33 
    34         public string Author { get; set; }
    35 
    36         public ImageInfo ImageInfo { get; private set; }
    37 
    38         public SettingInfo SettingInfo { get; private set; }
    39 
    40         public virtual ICollection<AssignedTag> AssignedTags
    41         {
    42             get { return _assignedTags; }
    43             protected set { _assignedTags = value; }
    44         }
    45 
    46         public string Content { get; set; }
    47 
    48         public SeoInfo SeoInfo { get; private set; }
    49 
    50         public void AssignTags(IEnumerable<Guid> tagIds)
    51         {
    52             tagIds = tagIds ?? Enumerable.Empty<Guid>();
    53 
    54             var oldAssignedTagIds = this.AssignedTags.Select(x => x.TagId).ToList();
    55             var addedTagIds = tagIds.Except(oldAssignedTagIds);
    56             var removedTagIds = oldAssignedTagIds.Except(tagIds);
    57 
    58             foreach (var addedTagId in addedTagIds)
    59             {
    60                 this.AssignedTags.Add(new AssignedTag(Guid.NewGuid(), addedTagId));
    61             }
    62 
    63             foreach (var removedTagId in removedTagIds)
    64             {
    65                 this.AssignedTags.Remove(this.AssignedTags.First(x => x.TagId == removedTagId));
    66             }
    67         }
    68     }
    69 }
  • 相关阅读:
    gethostbyname() 用域名或主机名获取IP地址
    recv, recvfrom, recvmsg 从套接口接收一个消息
    献给初学者:谈谈如何学习Linux操作系统
    Linux 文件处理 之扫描目录 DIR
    Python 使用sys模块
    struct dirent和DIR结构体
    职场人必读的文字只花10分钟影响你一辈子!
    信号量与线程互斥锁的区别
    send/sendto/sendmsg函数解析
    互联网常见Open API文档资源
  • 原文地址:https://www.cnblogs.com/happyframework/p/3517150.html
Copyright © 2011-2022 走看看