【问题标题】:Migrations.cs is not created successfullyMigrations.cs 未成功创建
【发布时间】:2014-08-18 12:17:31
【问题描述】:

我正在使用 webmatrix 在果园 cms 中创建名为“sms”的新模块。我成功创建了它,但是当我生成“migrateions.cs”时,它没有成功生成。

我在模型中的sms.cs 类如下所示

using System.Collections.Generic;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Records;

namespace SMSs.Model{
public class smsrecord:ContentPartRecord
{
    public virtual int ID{get;set;}
    public virtual string Name{get;set;}
    public virtual char is_deleted{get;set;}
}
public class smspart:ContentPart<smsrecord>
{

    [Required]
    public int ID
    {
        get{return ID=Record.ID;}
        set{Record.ID=value;} 
    }
    public string Name
    {
        get{return Name=Record.Name;}
        set{Record.Name=value;}
    }
    public char is_deleted
    {
        get{return is_deleted=Record.is_deleted;}
        set{Record.is_deleted=value;}
    }
}

生成的Migrations.cs类如下

using System;


using System.Collections.Generic;
using System.Data;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.MetaData;
using Orchard.ContentManagement.MetaData.Builders;
using Orchard.Core.Contents.Extensions;
using Orchard.Data.Migration;

namespace sms {
    public class Migrations : DataMigrationImpl {

        public int Create() {


            return 1;
        }
    }
}

为什么“migrations.cs”没有生成成功??请帮忙

【问题讨论】:

  • 怎么知道没有生成迁移成功?
  • 事实上,您的迁移对我来说看起来不错。为什么认为它不正确?
  • @ShaunLuttin 因为没有创建表..

标签: c# content-management-system orchardcms


【解决方案1】:

类本身已正确生成,尽管它缺少用于创建适当表的代码,因为您没有遵守记录类的命名约定。

数据迁移代码生成需要您遵循几个约定才能使其正常工作。即:

  • 记录的命名空间必须以.Models.Records 结尾
  • 必须存在一个名为 Id 的公共属性
  • 所有属性都必须是虚拟的(NHibernate 无论如何都需要)
  • 类不能密封
  • 类不能是抽象的
  • 类必须实现IContent或者是ContentPartRecord的子类

在您的情况下,名称空间(应以.Models 结尾)和ID 的不正确大小写(应为Id)是罪魁祸首。

【讨论】:

  • 另外,is_deleted 应该被命名为 IsDeleted 并且应该是一个布尔值,而不是一个字符。虽然我们这样做了,但使用 Store 和 Retrieve 比直接访问记录属性更好。
  • 我同意这一点——从 Orchard 1.8 开始,除非有充分的理由,否则我们不必使用支持记录。存储/检索通常是最好的方法。
  • 谢谢。 Migration.cs 仍未完全创建。但我想出来并手动完成,并在启用模块时创建表。
  • @PiotrSzmyd:这不是我的意思。 Store 和 Retrieve 也可以与基于记录的部分一起使用,如果这些属性可能会被查询,它们仍然有它们的位置。 IsDeleted 听起来像是您想要过滤的东西。
猜你喜欢
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多