- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
I've been following this tutorial关于如何在 MVC 中处理多个表,我在尝试为索引创建 View (教程中的第 12 步)时遇到错误,指定“EntityType 没有定义键”。我能够找到的唯一解决方案是在模型类的主键成员之前放置一个 [Key] 属性。但是,当我尝试再次创建 View 时,出现了同样的错误。
Controller 代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using RelationalDatabaseWebsite.Models;
namespace RelationalDatabaseWebsite.Controllers
{
public class UsersTablesController : Controller
{
private ApprenticeTestEntities db = new ApprenticeTestEntities();
public ActionResult Index()
{
UsersLogContext cs = new UsersLogContext();
List<Log> logs = cs.Log.ToList();
return View(logs);
}
Log 模型的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RelationalDatabaseWebsite.Models
{
[Table("LogTable")]
public class Log
{
[Key]
public int LogTableID { get; set; }
public int UserID { get; set; }
public string TimeLogged { get; set; }
public virtual UsersTable Users { get; set; }
}
}
用户模型代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RelationalDatabaseWebsite.Models
{
[Table("UsersTable")]
public class Users
{
[Key]
public int UserID { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Password { get; set; }
public string Salt { get; set; }
public string PhoneNumber { get; set; }
public string Email { get; set; }
public bool IsAdmin { get; set; }
public virtual ICollection<AddressTable> Address { get; set; }
public virtual ICollection<DOBTable> DOB { get; set; }
public virtual ICollection<LogTable> Log { get; set; }
}
}
DbContext 模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace RelationalDatabaseWebsite.Models
{
public class UsersLogContext : DbContext
{
public DbSet<Users> Users { get; set; }
public DbSet<Log> Log { get; set; }
}
}
用户数据库表
CREATE TABLE [dbo].[UsersTable](
[UserID] [uniqueidentifier] NOT NULL,
[FirstName] [varchar](50) NOT NULL,
[Surname] [varchar](50) NOT NULL,
[Password] [varchar](50) NOT NULL,
[Salt] [varchar](50) NOT NULL,
[PhoneNumber] [varchar](50) NULL,
[Email] [nvarchar](50) NOT NULL,
[IsAdmin] [bit] NOT NULL,
CONSTRAINT [PK_UsersTable] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
日志数据库表
CREATE TABLE [dbo].[LogTable](
[LogTableID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [uniqueidentifier] NOT NULL,
[TimeLogged] [datetime] NOT NULL,
CONSTRAINT [PK_LogTable_1] PRIMARY KEY CLUSTERED
(
[LogTableID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[LogTable] WITH CHECK ADD CONSTRAINT [FK_LogTable_UsersTable] FOREIGN KEY([UserID])
REFERENCES [dbo].[UsersTable] ([UserID])
GO
ALTER TABLE [dbo].[LogTable] CHECK CONSTRAINT [FK_LogTable_UsersTable]
GO
对于大量代码表示歉意,只是因为日志和用户表都出现了错误,我会把这两部分都记下来,以防各自的错误相互关联。
最佳答案
您的 Users
表的键类型为 uniqueidentifier 但您的代码模型的键类型为 int
[Key]
public int UserID { get; set; }
...
[UserID] [uniqueidentifier] NOT NULL,
尝试将用户模型中的键(及其在 Log 模型中的相关属性)更改为 Guid
...
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserID { get; set; }
关于c# - 我收到错误 'EntityType has no key defined',即使我在模型和数据库中都定义了一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211902/
我刚刚开始使用 BreezeJS,并将 HotTowel 模板与 Asp.Net Web Api 和 EF 结合使用 我已经尝试使用 manager.getEntityByKey 检索记录,使用 ht
我的代码在 Solution.Models.Worker 中: using System; using System.Collections.Generic; using System.Linq; u
请帮我解决这个问题。我已经坐了 2 天了,不知道我哪里做错了。我在下面看过这篇文章: EntityType 'MyProfile' has no key defined. Define the key
我的模型类是 public class posts { [Key] public int AuthorId; public string author_first_name;
我不确定为什么会收到此错误消息。我在我的 sql 数据库中为其定义了一个主键。这是我的代码: [HttpPost] public ActionResult Register(RegisterM
这个问题在这里已经有了答案: EntityType has no key defined error (13 个回答) 5年前关闭。 开发一个基本的 ASP.net MVC 4 应用程序。它是一个简单
我正在使用 Entity Framework Code First 和 MVC 5。当我使用个人用户帐户身份验证创建应用程序时,我获得了一个帐户 Controller 以及所有必需的类和代码,需要使个
我有 80 个表的数据库(每个表都有主键)。我已经从数据库(添加 - 新项目 - ADO.NET 实体数据模型)在 ASP.NET MVC 项目中生成了模型。但是在生成的模型中,我有 80 个类(对于
我有一个接收参数的操作,我想打印出所有结果 public ActionResult MusicaGenero(string genero) { //should return
我正在使用 EF Code First 和 Data Scaffolding 并且有一个包含类型属性的实体 public System.Drawing.Image Image { get; set;
在 Entity Framework 4.3.1 中,我有以下模型,它们运行良好: public class BaseUser { [Key] [MaxLength(100)]
我有一个 Entity Framework Code First 模型,其中有一个未映射的列,我仍然希望在服务器和客户端之间保留该列。该模型看起来与此类似,但具有更多属性: public class
我正在创建一个应用程序,用户可以在其中通过 Facebook oAuth 登录,然后设置歌曲列表。我收到以下错误消息: BandFinderCsharp.Models.IdentityUserLogi
C# 代码(EF6 代码优先): public class ProjectSourceProject { [Key, Column(Order = 0)] //[Key, Column
我有两个类 User.php 和 Group.php,它们是从 fosuserbundle 中定义的类扩展而来的。 除此之外,我在它们之间有一个 ManyToMany 关系。 该应用程序的想法是,当我
在我的项目中,我使用一个表(用户任务)中的数据来描述创建预订记录(预订表)的数据。在表单中,我尝试接收选择列表。运行时报错: Expected argument of type "Doctrine\O
Controller : using System; using System.Collections.Generic; using System.Linq; using System.Web; us
我已将 Symfony 的 EntityType 扩展为 UserChooserType 以用于我的 User 实体和 Select2。 UserChooserType 的选择列表来自 ldap 查询
我有一个带有 EntityType 类型字段的表单: $builder->add( 'contacts', EntityType::class,
我有一个像这样的表单字段: $form->add('tags', EntityType:class, array( 'class' => Tags::class, 'multiple'
我是一名优秀的程序员,十分优秀!