标签: scaffolding

重写 Rails 支架以实现自定义 API 版本控制功能

我正在尝试自定义 Railsscaffold 命令,以便当我运行时

rails generate scaffold api/v1/model_name
Run Code Online (Sandbox Code Playgroud)

它仍然生成文件夹结构,但不会将 api_v1_ 添加到视图、测试等中。

IE 在此输入图像描述

我了解如何从这篇文章中覆盖和添加新的部分: 覆盖 Rails 脚手架生成器,但我想覆盖测试、工厂和视图。

ruby-on-rails generator scaffolding ruby-on-rails-5

5
推荐指数
0
解决办法
310
查看次数

新的语言功能破坏了脚手架 - 无法获取 DbContext 的反射类型

因此,新的语言功能实现了简写默认关键字的选项。

public void GenericMethod<T>(T responseObject = default)
{
    //Your code here
}
Run Code Online (Sandbox Code Playgroud)

而不是旧的

public void GenericMethod<T>(T responseObject = default(T))
{
    //Your code here
}
Run Code Online (Sandbox Code Playgroud)

当使用新的简写时,我们遇到了一个错误,即无法在 dotnet core 中搭建视图或控制器。- 给出错误“运行所选代码生成器时出错:无法获取 DbContext 的反射类型:...”

通过恢复到实现“默认”的旧方式,错误就会消失。

截至目前,使用 default 关键字的新方法是我们遇到的唯一破坏它的方法,但我认为类似的新语言功能可能会存在问题。

这其实不是一个问题。我们只是认为传播这个错误的信息会很好;因为没有帖子讨论这个问题。

视觉工作室:视觉工作室 2019

目标框架:.NET Core 2.2

编辑:这不是 EF 的问题。如果尝试在没有使用模型类(FooClass)的 dbContext 的情况下构建视图,错误将更改为:无法获取模型的反射类型:FooClass

c# scaffolding default-value visual-studio

5
推荐指数
1
解决办法
917
查看次数

dotnet ef dbcontext脚手架命令--data-annotations或-d命令行参数似乎不起作用

我有一个简单的数据库,其中有一张表,该表具有各种属性。

我正在使用最新的 .NET core 6 和最新的 EF (6.0.4)

我想构建我的数据库以便它生成模型,所以我运行命令:

dotnet ef dbcontext scaffold "Server=MyServerName;Database=MyDBName;User Id=sa;Password=abc123;" 
Microsoft.EntityFrameworkCore.SqlServer -o Model --no-pluralize -d -f
Run Code Online (Sandbox Code Playgroud)

-d 命令应该使用数据注释而不是流畅注释,但事实并非如此。我最终得到一个MyTable类,其中清楚地列出了属性,例如public int MyTableId; public string MyTableProperty;....,然后在我的MyDBNameContextOnModelCreating方法中,有几页这样的内容:

 modelBuilder.Entity<MyTable>(entity =>
            {
                entity.HasIndex(e => e.SomeColumn, "idx_somecolumn");

                entity.Property(e => e.firstcolumn)
                    .HasColumnType("decimal(8, 1)")
                    .HasColumnName("FirstColumn");

                ...
Run Code Online (Sandbox Code Playgroud)

这真是太可怕了。帮助中是这么说的:

-d|--data-annotations 使用属性来配置模型(如果可能)。如果省略,则仅使用 Fluent API。

我可以煞费苦心地手动完成并添加注释,但如果我将来由于更改而重新生成,那么它将撤消我的工作。

数据注释属性不起作用是否有原因?

.net scaffolding entity-framework-core entity-framework-migrations

5
推荐指数
1
解决办法
2400
查看次数

实体框架核心 - 脚手架枚举

语境:

我使用数据库优先方法通过 Entity Framework Core 和脚手架生成实体。每次我更改数据库中的某些内容时,我都会使用-f参数运行脚手架来重写生成的实体。到目前为止,一切都很好。在我的数据库模式中,我有一些查找表,它们用作其他表的枚举,并且这些其他表上有外键。

问题:

我想从这些查找表生成枚举,我可以在代码中使用它们。这些枚举应由查找表中的数据(Id、Value)填充。这样的事情有可能吗?

我发现人们可以忽略实体生成中的那些表,并使用value-conversions链接它们自己的枚举。但这真的是唯一的出路吗?


我的数据库架构示例:

桌子:Category

ID 价值
0 有氧运动
1 力量
2 肥大

桌子:Exercise

ID 姓名 类别
0 硬拉 1
1 卧推 1
2 跑步 0

所以从表中Category我想生成简单的枚举:

public enum Category {
    Cardio = 0,
    Strength = 1,
    Hyperthrophy = 2
}
Run Code Online (Sandbox Code Playgroud)

然后我希望它在实体中使用,Exercise例如:

public partial class Exercise {
    public Exercise() {
    }

    public int Id { get; set; }
    public string Name { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# enums scaffolding ef-database-first entity-framework-core

5
推荐指数
1
解决办法
1261
查看次数

我可以强制 Entity Framework Core 7 不将 ICollections 设置为只读吗?

Entity Framework Core 7 引入了一项重大更改(尽管它在 EF Core 7 的重大更改中列出):使用脚手架 ( Scaffold-DbContext) 定义模型类时,EF Core 7 现在将ICollection属性设置为只读。

EF 6 代码示例:

public virtual ICollection<PictureData> PictureData { get; set; }
public virtual ICollection<PictureMetaData> PictureMetaData { get; set; }
Run Code Online (Sandbox Code Playgroud)

EF Core 7 代码示例:

public virtual ICollection<PictureData> PictureData { get; } = new List<PictureData>();
public virtual ICollection<PictureMetaData> PictureMetaData { get; } = new List<PictureMetaData>();
Run Code Online (Sandbox Code Playgroud)

我有分配给这些属性的代码,有什么方法可以强制将Scaffold-DbContext这些属性定义为非只读吗?(而且我不想手动更改它......)

(有没有理由让这些只读?)

谢谢你的帮助!

c# scaffolding entity-framework-core .net-7.0 ef-core-7.0

5
推荐指数
1
解决办法
829
查看次数

不在Rails控制器中实现所有REST操作是错误的吗?

假设我有一个SessionsController控制用户登录和注销的操作,但我真正需要的唯一操作是新的(用于显示登录表单),创建(用于身份验证和登录)以及用于注销用户的销毁.

如果我在控制器中只有这三个动作,或者我是否必须全部实现它们以使其正确RESTful,是否有任何问题?

第二个小问题.有人说脚手架很糟糕,而且应该手工编写代码,但我发现它非常有用且节省时间.

是否可以使用脚手架,还是应该避免的邪恶?为什么?

ruby rest ruby-on-rails scaffolding

4
推荐指数
1
解决办法
501
查看次数

跳过模型创建脚手架

我有rails 2.3和ruby 1.8.7

我想只创建一个控制器并查看它的文件.在rails2.3中是否有任何命令可以帮助我做到这一点.我知道这可以在rails 3中完成,但有没有办法在rails 2.3中执行此操作

ruby ruby-on-rails scaffolding

4
推荐指数
1
解决办法
1936
查看次数

具有实体框架的MVC控制器的T4模板 - 主机的成员属性(MvcTextTemplateHost)?

有没有人完全引用我可以在MVC 3附带的T4模板ControllerWithContext.tt中使用的Host对象的成员?

我已经尝试了我能想到的每一个谷歌搜索,但唯一相关的结果是这个页面:http: //blogs.msdn.com/b/webdevtools/archive/2009/01/29/t4-templates-a-quick -启动引导换ASP净MVC-developers.aspx

但它只显示4个属性(ItemName,NameSpace,ExtraActionMethods,ControllerRootName)而不是完整列表.在模板中有像RelatedProperties,EntitySetName,ModelType和ContextType之类的东西.

我正在尝试查找完整的属性列表,其类型和说明.任何帮助将不胜感激.

asp.net-mvc t4 scaffolding visual-studio asp.net-mvc-3

4
推荐指数
1
解决办法
2253
查看次数

MVCScaffolding入门

我已经阅读了许多MVC教程,现在我想创建一个现有数据库的原型mvc应用程序.

我已经安装了MVCScaffolding包,我想将它与现有数据库一起使用.有人找到了这样做的步骤吗?我看了,但一直无法弄清楚如何让它工作.

我想连接到SQL Server数据库并从中创建模型.然后搭建视图和控制器.

有什么我不理解的吗?这是MVC脚手架的工作原理吗?

asp.net-mvc scaffolding asp.net-mvc-3

4
推荐指数
1
解决办法
2611
查看次数

如何在Grails中使用嵌入式GORM类?

GORM文档之后,我尝试将以下域类与Grails 2.2.1一起使用:

package grailscompositiontest

class ScafPerson {
    String name
    ScafAddress homeAddress
    ScafAddress workAddress

    static constraints = {
        name(nullable: false, blank: false)
    }

    static embedded = ['homeAddress', 'workAddress']
}

class ScafAddress {
    String number
    String code
}
Run Code Online (Sandbox Code Playgroud)

控制器只使用脚手架:

package grailscompositiontest

class ScafPersonController {
    static scaffold = true
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,只要我浏览到"创建"视图就会触发服务器错误:

URI:     /GrailsCompositionTest/scafPerson/create
Class:   java.lang.NullPointerException
Message: Cannot get property 'id' on null object
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

grails scaffolding grails-orm grails-domain-class

4
推荐指数
1
解决办法
2935
查看次数