4

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

模型生成得很好,它们验证得很好,如果我尝试做简单的数据访问,这也很好。

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

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

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

无论如何,我离题了,现在我已经将密钥添加到 User 和 UserDetails cs 文件中,它停止抱怨,现在开始抱怨:

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

我现在有两个问题:

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

我觉得有些不对劲,因为我不应该在这样的问题后遇到问题?

4

2 回答 2

1

我有一个类似的“无法检索类型的元数据......”错误。假设(如果有的话)您之间的关系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,别无他法。然后构建您的解决方案并尝试运行它。可能是一个长镜头,但它对我有用。来自这里的更多信息,我在那里问了一个类似的问题。

于 2013-02-07T20:29:54.787 回答
0

密钥的使用如下:

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

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

于 2017-06-27T18:15:13.090 回答