asp.net无法检索元数据

时间:2013-07-22 12:54:50

标签: asp.net-mvc-3 c#-4.0

嗨,即使在阅读完提示后,我仍然遇到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"
/>

任何提示?

2 个答案:

答案 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文件......嗯另一个问题。