嗨,即使在阅读完提示后,我仍然遇到MVC制作控制器的问题。 在DbContext上添加构造函数,删除未工作的,更改providerName =“System.Data.SqlClient”等等。
我的模型类看起来像这样:
public class RecruiterModel
{
public string CompanyName { get; set; }
public string Website { get; set; }
public string CompanySize { get; set; }
public string LinkedInCompanyURL { get; set; }
public string LinkedInID { get; set; }
public string Specialities { get; set; }
public string Category { get; set; }
public string Location { get; set; }
public int ContactPhone { get; set; }
public string ContactEmail { get; set; }
}
public class RecruiterDBContext : DbContext
{
public DbSet<RecruiterModel> Recruiters { get; set; }
}
和我的web.config connectionStrings看起来像这样:
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
<add name="RecruiterDBContext"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Recruiters.mdf;Integrated Security=True"
providerName="System.Data.SqlClient"
/>
任何提示?
答案 0 :(得分:0)
将以下属性添加到Recruiter
类:
public string Id { get; set; }
或者将Key
属性应用于您现有的某个属性。例如:
[Key]
public string CompanyName { get; set; }
在MSDN上,您有Code First Conventions主题:
主要关键会议
Code First推断,如果a上的属性属性是主键 class被命名为“ID”(不区分大小写),或者后面是类名 通过“ID”。如果主键属性的类型是数字或GUID它 将被配置为标识列。
public class Department { // Primary key public int DepartmentID { get; set; } . . . }
关于该主题的另一个参考文献在这篇Code First DataAnnotations文章中提出:
关键
实体框架依赖于每个具有键值的实体(也就是说 EntityKey)用于跟踪实体。其中一项惯例 该代码首先取决于它是如何暗示哪个属性是关键 在每个代码的第一个类中。该约定寻找a 名为“Id”的属性或组合了类名和“Id”的属性,例如 作为“BlogId”。除了EF使用EntityKey之外,还有该属性 将映射到数据库中的主键列。
答案 1 :(得分:0)
我找到了创建控制器类的解决方案: 在模型类中,我添加了
使用System.ComponentModel.DataAnnotations;
公共类RecruiterModel { [键] 公共字符串Id {get;组;
然后在web.config上我注释掉了整个
connectionStrings标记
然后我创建了控制器,但它工作正常。
感谢Alex Filipovici和Young Yang - MSFT对: http://forums.asp.net/t/1888573.aspx/1?Unable+to+retrieve+metadata+for+when+trying+to+create+a+controller
虽然它可以工作但是在App_Data下的Solution Explorer选项卡上我没有看到db文件......嗯另一个问题。