System.Data.Entity.Edm.EdmEntityType: : EntityType 'MyRecord' 没有定义键。为此 EntityType 定义键
System.Data.Entity.Edm.EdmEntityType: : EntityType 'MyRecord' has no key defined. Define the key for this EntityType
我正在尝试从我的 MVC 应用程序连接到 SQL 服务器数据库。我不断收到此错误:
System.Data.Entity.Edm.EdmEntityType: : EntityType 'MyRecord' 没有定义键。为此 EntityType 定义键。我用谷歌搜索了一下,发现这个错误发生在没有为 class 中的键定义 get 和 set 时。在我的情况下这不是真的,因为我已经定义了它们。下面是我的样本 class:
[Table("DataRecords")]
public class MyRecord
{
public string RecordID { get; set; }
public string RecordDesc { get; set; }
public float PageNo { get; set; }
}
我还有 MyRecordContext class:
public class MyRecordContext : DbContext
{
public DbSet<MyRecord> MyRecords { get; set; }
}
以及具有 "Details" 操作的控制器:
public ActionResult Details(string _id)
{
MyRecordContext rc = new MyRecordContext(); <-- ERROR HERE
MyRecord r = rc.MyRecords.Single(x => x.RecordID == _id);
return View(r);
}
我称之为:http://localhost:57802/Home/Details/01-019-2-1111-00-00
任何人都可以帮助诊断问题吗?
错误告诉您确切的问题。您的实体上没有定义键。 Entity Framework 使用某些约定来自动破译哪个 属性 应该是主键,但是,由于您的实体在这里被命名为 MyRecord
,EF 将寻找一个 属性 命名为类似MyRecordID
,而不是 RecordID
。如果你的 class and/or 属性 名称不符合约定,那么你必须明确告诉 EF 使用什么:
[Key]
public string RecordID { get; set; }
更新
如果你有复合键,那么,你只需要指定列的顺序:
[Key, Column(Order = 1)]
public int Key1 { get; set; }
[Key, Column(Order = 2)]
public int Key2 { get; set; }
我正在尝试从我的 MVC 应用程序连接到 SQL 服务器数据库。我不断收到此错误:
System.Data.Entity.Edm.EdmEntityType: : EntityType 'MyRecord' 没有定义键。为此 EntityType 定义键。我用谷歌搜索了一下,发现这个错误发生在没有为 class 中的键定义 get 和 set 时。在我的情况下这不是真的,因为我已经定义了它们。下面是我的样本 class:
[Table("DataRecords")]
public class MyRecord
{
public string RecordID { get; set; }
public string RecordDesc { get; set; }
public float PageNo { get; set; }
}
我还有 MyRecordContext class:
public class MyRecordContext : DbContext
{
public DbSet<MyRecord> MyRecords { get; set; }
}
以及具有 "Details" 操作的控制器:
public ActionResult Details(string _id)
{
MyRecordContext rc = new MyRecordContext(); <-- ERROR HERE
MyRecord r = rc.MyRecords.Single(x => x.RecordID == _id);
return View(r);
}
我称之为:http://localhost:57802/Home/Details/01-019-2-1111-00-00
任何人都可以帮助诊断问题吗?
错误告诉您确切的问题。您的实体上没有定义键。 Entity Framework 使用某些约定来自动破译哪个 属性 应该是主键,但是,由于您的实体在这里被命名为 MyRecord
,EF 将寻找一个 属性 命名为类似MyRecordID
,而不是 RecordID
。如果你的 class and/or 属性 名称不符合约定,那么你必须明确告诉 EF 使用什么:
[Key]
public string RecordID { get; set; }
更新
如果你有复合键,那么,你只需要指定列的顺序:
[Key, Column(Order = 1)]
public int Key1 { get; set; }
[Key, Column(Order = 2)]
public int Key2 { get; set; }