这是我的模型类;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace ContactFormWithMultipleCheckboxApp.Models {
public class Product {
public int ProductId { get; set; }
[Required, StringLength(50)]
public string ProductName { get; set; }
public string Description { get; set; }
public virtual ICollection<Message> Messages { get; set; }
}
public class Message {
public int MessageId { get; set; }
public string From { get; set; }
[Required]
//below one is to validate whether the e-mail address is legit or not
[RegularExpression("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\b")]
public string Email { get; set; }
[StringLength(100)]
public string Subject { get; set; }
public string Content { get; set; }
public int ProductId { get; set; }
public Product Product { get; set; }
}
}
我已将MvcScaffolding作为nuget包安装到我的应用程序中。我正在尝试使用以下代码进行简单的脚手架;
PM> Scaffold Controller Message
它可以工作并创建我的控制器,视图和DBContect类。但我有一个问题。为什么它在dbcontect类中复制了我的dbset项;
public class ContactFormWithMultipleCheckboxAppContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
//
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, add the following
// code to the Application_Start method in your Global.asax file.
// Note: this will destroy and re-create your database with every model change.
//
// System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<ContactFormWithMultipleCheckboxApp.Models.ContactFormWithMultipleCheckboxAppContext>());
public DbSet<ContactFormWithMultipleCheckboxApp.Models.Message> Messages { get; set; }
}
正如您所看到的,它将名称创建为Messages,但它在视图和控制器等其他位置使用Message。
这里发生了什么?
答案 0 :(得分:1)
在this blog post about MvcScaffolding 0.9.4中,史蒂夫桑德森写道:
“根据您的反馈,控制器 现在名称默认为复数形式 (例如,你得到的是PeopleController 比PersonController的模型 键入Person,除非您明确说明 输入PersonController作为 脚手架时的控制器名称)“
所以默认情况下(或惯例)它会使你的名字复数化,除非你告诉它不要。你声明你这样做了,并没有使你的控制器或观点多元化。
我想知道你是否还需要告诉EntityFramework不要复数。有关详细信息,请参阅此帖子"How to singularize in EntityFramework"。