实体框架5 MVC 4-脚手架错误-无密钥

本文关键字:错误 密钥 脚手架 框架 MVC 实体 | 更新日期: 2023-09-27 17:58:01

首先,我必须说我是MVC和EF的新手。我首先使用数据库创建了模型,并选择了两个表用户--->用户详细信息(相关)

模型生成良好,验证良好,如果我尝试进行简单的数据访问,这也很好。

现在,当我尝试将其与MVC 4脚手架相结合,并选择新的控制器/EF框架添加/更新/删除等时,我将其放入User Model+UserContext中,它抱怨自动生成的Model没有键。

实体类型-"用户"没有键。所以我打开模型,看到实际上有一个键,它勾选了实体键复选框,以及属性旁边的小"键"符号。

我到处都找过了,唯一有效的解决方案是手动打开User.cs,并将[Key]属性放在键旁边——这对我来说很可怕,因为这个文件显然是自动生成的,我不想对每个键都这样做?我做错什么了吗?

我总是离题,现在我已经向User和UserDetails cs文件添加了密钥,它停止了抱怨,现在开始抱怨:

无法检索用户的元数据。无法确定User和UserDetail之间关联的原则结束。必须使用关系fluent API或数据注释显式配置此关联的原则端。

我现在有两个问题:

  1. 我应该这样处理自动生成的文件吗?还是我做错了什么?2/我该如何解决第二个问题

我觉得有什么不对劲,因为我不应该像这样处理一个又一个问题?

实体框架5 MVC 4-脚手架错误-无密钥

我遇到了类似的"无法检索类型…的元数据"错误。假设(如果有)UsersUserDetails之间的关系正确实现,您可以尝试以下操作,这就是我为解决错误所做的:

在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;}
}

该键用于告诉Entity这是带有数据注释的主键。