惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
爱范儿
爱范儿
博客园 - Franky
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
雷峰网
雷峰网
月光博客
月光博客
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学
罗磊的独立博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog
Know Your Adversary
Know Your Adversary
宝玉的分享
宝玉的分享
L
Lohrmann on Cybersecurity
S
SegmentFault 最新的问题
L
LangChain Blog
K
Kaspersky official blog
P
Palo Alto Networks Blog
P
Privacy & Cybersecurity Law Blog
美团技术团队
Scott Helme
Scott Helme
B
Blog RSS Feed
T
Threat Research - Cisco Blogs
博客园_首页
L
LINUX DO - 热门话题
腾讯CDC
C
CERT Recently Published Vulnerability Notes
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
V
V2EX
Martin Fowler
Martin Fowler
T
The Exploit Database - CXSecurity.com
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
Latest news
Latest news
S
Schneier on Security
AWS News Blog
AWS News Blog

博客园 - 飞翔的天空

sp.net core部署到iis中出现 HTTP Error 502.5 - Process Failure 的解决办法 aspnet zero Swagger 不出现Authorize按钮的解决办法 Js获取当前日期时间及其它操作 js阿拉伯数字转中文大写 php学习点滴 excel合并单元格内容 EXCEL公式以指定分隔符从右往左截取字符 drupal学习FAQ drupal模块简介 js中三目运算及readonly的解决办法 Zxing中文乱码的简单解决办法 easyUI MVC3一些注意的东东(4) orchard文档之-orchard工作原理 orchard文档之-搜索和索引 orchard文档之-更新站点到新的orchard版本 orchard文档之-创建自定义表单 准备把orchard的自己认为重要的文档翻译一遍 orchard文档之-理解内容处理器 orchard文档之-理解数据访问
orchard模块编写的错误及其解决办法
飞翔的天空 · 2013-06-12 · via 博客园 - 飞翔的天空

在编写自定义模块的时候,出现了一些意想不到的的错误,在解决这些问题的时候,加深了对orchard开发的认识。

1、编写了part,编辑的时候总是不出现part的界面

   检查了所有文件,最后发现在partDriver类中没有将Service添加到构造函数,

原来的写法:

  public class FixedAssetPartDriver : ContentPartDriver<FixedAssetPart>
    {
        private readonly INotifier _notifier;
        private const string TemplateName = "Parts/FixedAsset";
        private readonly IFixedAssetService _service;

        protected override string Prefix
        {
            get { return "FixedAsset"; }
        }

        public Localizer T { get; set; }

        public FixedAssetPartDriver(INotifier notifier)
      //public FixedAssetPartDriver(INotifier notifier,IFixedAssetService service)
        {
            _notifier = notifier;
          //  _service = service;
            T = NullLocalizer.Instance;
        }

更新后的写法:

 public FixedAssetPartDriver(INotifier notifier,IFixedAssetService service)
        {
            _notifier = notifier;
            _service = service;
            T = NullLocalizer.Instance;
        }
IFixedAssetService 没有实例化,导致她调用的数据,不能出现,也就没有part页面出来了。

2、更新数据的时候,出现null id的错误,找了几天都没找到原因。最新看文档,发现一个细节没有注意
看原来的代码:

 public class FixedAssetPart : ContentPart<FixedAssetPartRecord> {
        public string AssetCode {
            get { return Record.AssetCode; }
            set { Record.AssetCode = value; }
        }
        public string AssetName
        {
            get { return Record.AssetName; }
            set { Record.AssetName = value; }
        }

        public string Brand
        {
            get { return Record.Brand; }
            set { Record.Brand = value; }
        }

        public decimal AssetValue
        {
            get { return Record.AssetValue; }
            set { Record.AssetValue = value; }
        }
        public AssetBuyMethodRecord AssetBuyMethod
        {
            get { return Record.AssetBuyMethod; }
            set { Record.AssetBuyMethod = value; }
        }
     

migration类:

 SchemaBuilder.CreateTable(typeof(FixedAssetPartRecord).Name,
                t => t.ContentPartRecord()
                    .Column<string>("AssetCode")
                    .Column<string>("AssetName")
                    .Column<string>("Brand")
                    .Column<decimal>("AssetValue")
                    .Column<int>("AssetBuyMethodRecord_Id")
                   

                    );

想当然的认为,FixedAssetPartRecord与AssetBuyMethodRecord是一对多的关系,所有FixedAssetPartRecord的表的列应该是AssetBuyMethodRecord_Id

实际上应该是FixedAssetPart的属性的名称加_Id的命名,即AssetBuyMethod_Id

所以,migration.cs的建表时应该是:

 SchemaBuilder.CreateTable(typeof(FixedAssetPartRecord).Name,
                t => t.ContentPartRecord()
                    .Column<string>("AssetCode")
                    .Column<string>("AssetName")
                    .Column<string>("Brand")
                    .Column<decimal>("AssetValue")
                    .Column<int>("AssetBuyMethod_Id")
                

                    );

就这么一个小的细节,折磨了我整整三天时间才找到原因。