![](/img/trans.png)
[英]Adding A New MVC 5 Controller with Views Using Entity Framework Scaffolding Error
[英]Entity Framework 5 MVC 4 - Scaffolding Error - no key
首先,我不得不说我是MVC和EF的新手。 我使用Database First创建了Model,并选择了两个表用户---> User Detail(相关)
模型生成正常,它们验证很好,如果我尝试做简单的数据访问,这也很好。
现在当我尝试将它与MVC 4脚手架和选择的新控制器/ EF框架添加/更新/删除等结合起来时,我放入User Model + UserContext它抱怨自动生成的模型没有密钥。
实体类型 - “用户”没有密钥。 所以我打开模型,看到实际上有一个键,它有复选框Entity键,以及该属性旁边的小“关键”符号。
我到处寻找唯一可行的方法是手动打开User.cs并将[Key]属性放在键旁边 - 这对我来说很可怕,因为这个文件显然是自动生成的,我不想要做这对每一把钥匙? 难道我做错了什么?
从来没有我离题,现在我已经为User和UserDetails cs文件添加了密钥,它停止抱怨,现在开始抱怨:
无法检索MetaData:for User。 无法确定User和UserDetail之间关联的主要结束。 必须使用关系流畅API或数据注释显式配置此关联的主要结束。
我现在有两个问题:
我觉得有些事情是错的,因为我不应该在这样的问题之后遇到问题吗?
我有类似的“无法检索类型的元数据...”错误。 假设(如果有)您正确实现了Users
和UserDetails
之间的关系,您可以尝试以下操作,这就是我解决错误的方法:
在您的Web.config文件(根目录,在解决方案资源管理器的最后)更改连接字符串中的name
...
<connectionStrings>
<add name="YourContext" connectionString="Data Source=|DataDirectory|YourNamespace.Models.YourDBName.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
......对此:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=|DataDirectory|YourNamespace.Models.YourDBName.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
只需更改name
,别的。 然后构建您的解决方案并尝试运行它。 可能是一个长镜头,但它对我有用。 更多信息来自这里 ,我问了一个类似的问题。
密钥使用如下:
public class Item()
{
[Key]
public int Id {get;set;}
public string Name {get;set;}
}
密钥用于告诉实体这是带有数据注释的主键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.