实体框架不识别外键

本文关键字:识别 框架 实体 | 更新日期: 2023-09-27 18:00:29

我正在尝试设置一个变量,比如…

var userID = WebMatrix.WebData.WebSecurity.CurrentUserId;
var options = db.UserProfiles.Find(userID).TaskTypeSetting;

我使用的是基本的Internet应用程序模板提供的用户身份验证表。

UserProfile中的行UserId与表TaskTypeSetting中的行User具有一对多关系

它告诉我,它找不到TaskTypeSetting的定义。如果我的关系建立得很好,我不应该这样做吗?

这是表格的模型:

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:"DailyTaskList.Models.UserProfile"不包含"TaskSetting"的定义,也找不到接受第一个"DailyTaskList.Models.UserProfile"类型参数的扩展方法"TaskSetting"(是否缺少using指令或程序集引用?)

我也在映射细节下得到了这个:

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

实体框架不识别外键

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

我使用的解决方案:

  • 右键单击.tt文件并选择"运行自定义工具"

其他解决方案:

  • 更新Visual Studios
  • 将.edmx从项目文件夹中拖出来

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