2013-02-07 105 views
4

首先,我不得不说,我对MVC和EF一个完整的新手。我一直在使用数据库首先创建的模型,并选择了两个表的用户--->用户详细信息(相关)实体框架5 MVC 4 - 脚手架错误 - 没有钥匙

这些模型产生的罚款,但罚款验证,如果我尝试做简单的数据存取这也能正常工作。

现在,当我尝试结合这与MVC 4脚手架和选择新的控制器/ EF框架添加/更新/删除等,我把User Model + UserContext它抱怨自动生成的模型没有关键。

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

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

从来没有少我离题了,现在我已经添加的关键在于User和CS的UserDetails文件,它停止抱怨,现在开始抱怨:

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

我现在已经两个问题:

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

我觉得有些事情是错的,因为我不应该在这样的问题后遇到问题?

+0

我有一个想法:你的礼物的关键是有一个'{get; set;}'?如果你没有EF和脚手架不工作 – MayogaX

回答

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,没有别的。然后构建您的解决方案并尝试运行它。可能是一个长镜头,但它对我有用。来自here的更多信息,我问了一个类似的问题。

+0

:(没有为我工作,将不得不继续尝试。 –

0

的关键是使用如下:

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

的关键是用来告诉实体,这是与数据注释的主键。