C# 实体框架5 MVC 4-支架错误-无键

C# 实体框架5 MVC 4-支架错误-无键,c#,asp.net-mvc,entity-framework,scaffolding,C#,Asp.net Mvc,Entity Framework,Scaffolding,首先我必须说我是一个MVC和EF的新手。我首先使用数据库创建了模型,并选择了两个表用户---->用户详细信息(相关) 模型生成得很好,验证得很好,如果我尝试进行简单的数据访问,效果也很好 现在,当我尝试将其与MVC4脚手架和选择的新控制器/EF框架添加/更新/删除等结合起来时,我将用户模型+用户上下文放入其中,它抱怨自动生成的模型没有键 实体类型-“用户”没有密钥。因此,我打开模型,看到实际上有一个键,它勾选了实体键复选框,以及属性旁边的小“键”符号 我到处都找过了唯一有效的解决方案是手动打开U

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

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

现在,当我尝试将其与MVC4脚手架和选择的新控制器/EF框架添加/更新/删除等结合起来时,我将用户模型+用户上下文放入其中,它抱怨自动生成的模型没有键

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

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

尽管我离题了,但现在我已经将密钥添加到User和UserDetails cs文件中,它不再抱怨,现在开始抱怨:

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

我现在有两个问题:

  • 我应该像这样处理自动生成的文件吗?还是我做错了什么? 2/如何解决第二个问题 我觉得有点不对劲,因为我不应该一个接一个地碰到这样的问题?

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

    在您的Web.config文件(根文件,位于解决方案资源管理器的最末端)中,从以下位置更改连接字符串中的
    name

    <connectionStrings>
     <add name="YourContext" connectionString="Data Source=|DataDirectory|YourNamespace.Models.YourDBName.sdf" providerName="System.Data.SqlServerCe.4.0" />
    </connectionStrings>
    
    
    
    ,我问了一个类似的问题。

    使用的键如下:

    public class Item()
    {
        [Key]
        public int Id {get;set;}
        public string Name {get;set;}
    }
    

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

    我有一个想法:作为该键的适当性有一个“{get;set;}”?如果没有,EF和脚手架就不能工作
    public class Item()
    {
        [Key]
        public int Id {get;set;}
        public string Name {get;set;}
    }