C# 实体框架不识别外键?

C# 实体框架不识别外键?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正试图设置一个变量,就像这样 var userID = WebMatrix.WebData.WebSecurity.CurrentUserId; var options = db.UserProfiles.Find(userID).TaskTypeSetting; 我使用的是基本Internet应用程序模板提供的用户身份验证表 表UserProfile中的行UserId与表任务排版中的行User具有一对多关系 它告诉我它找不到任务排版的定义。如果我的关系建立得很好,我难道不能这样做吗 以下是

我正试图设置一个变量,就像这样

var userID = WebMatrix.WebData.WebSecurity.CurrentUserId;
var options = db.UserProfiles.Find(userID).TaskTypeSetting;
我使用的是基本Internet应用程序模板提供的用户身份验证表

UserProfile
中的行
UserId
与表
任务排版中的行
User
具有一对多关系

它告诉我它找不到
任务排版
的定义。如果我的关系建立得很好,我难道不能这样做吗

以下是表格的模型:

namespace DailyTaskList.Models
{
    using System;
    using System.Collections.Generic;

    public partial class TaskTypeSetting
    {
        public int ID { get; set; }
        public int Type { get; set; }
        public int User { get; set; }
    }
}
看起来它没有将关系添加到代码中?.edmx图显示了我设置的关系

编辑:

UserProfile类定义:

namespace DailyTaskList.Models
{
    using System;
    using System.Collections.Generic;

    public partial class UserProfile
    {
        public int UserId { get; set; }
        public string UserName { get; set; }
    }
}
编译器错误消息:CS1061:“DailyStaskList.Models.UserProfile”不包含“TaskSetting”的定义,并且找不到接受“DailyStaskList.Models.UserProfile”类型的第一个参数的扩展方法“TaskSetting”(是否缺少using指令或程序集引用?)

我还将在映射详细信息下获取此信息:

Mappings are not allowed for an association over exposed foreign keys.

经过一些研究,我发现我遇到的是Visual Studio 2012和Entity Framework的一个bug。实体框架未能正确生成代码。这是由于.edmx文件嵌套在项目文件中造成的

我使用的解决方案是:

  • 右键单击.tt文件并选择“运行自定义工具”
其他解决办法:

  • 更新视觉工作室
  • 将.edmx从项目文件夹中拖出

我写了一篇关于这种情况的博客,可以找到。

你收到编译时错误了吗?是的,这是一个编译错误。只要看看你生成的表对象,就会发现我已经添加了相应的代码。不管出于什么原因,代码似乎没有被添加。这是EF bug还是我做的什么?你真的需要发布用户和用户配置文件类定义。根据您显示的内容,您的UserProfile需要使用UserID作为PK标识符,每个用户只允许一个UserProfile。我怀疑userProfile类中没有用于TaskTypeSetting的“sub”对象,这会导致编译错误。但是我不能在没有看到其他课程的情况下肯定地说你做错了什么