到目前为止我发现的所有帮助都说用[Key]定义主键,它必须命名为ID或 YourClassName ID。据我所知,这是正确的格式,但我仍然收到此错误:
![无法检索'DARTPRO.Models.Members'的元数据。在模型生成期间检测到一个或多个验证错误:
DARTPRO.Models.PlayerScores :: EntityType'PlayerScores'没有定义键。定义此EntityType的键。 Players_Scores:EntityType:EntitySet'Players_Scores'基于没有定义键的tpye'PlayerScores'。1
创建这样的控制器时:
![型号类:(DARTPRO.Models)
数据上下文类:DartConnection(DARTPRO.Models)] 2
以下是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace DARTPRO.Models
{
public class DartConnection : DbContext
{
public DbSet<Members> Member_Details { get; set;}
public DbSet<PlayerScores> Players_Scores { get; set;}
}
[Table("MenmbersProfile")]
public class Members
{
[Key]
public int MembersID { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public string Nickname { get; set; }
public string Contactnumber { get; set; }
public string Address { get; set; }
}
[Table("PlayersGameDetials")]
public class PlayerScores
{
[Key]
public int PlayerScoresID { get; set; }
public int HigestScore { get; set; }
public double ThreeDartAverage { get; set; }
public double OneDartAverage { get; set; }
public int DartsThrown { get; set; }
public int MembersID { get; set; }
}
}
答案 0 :(得分:0)
你的代码中有一些拼写错误
[表( “MenmbersProfile”)] 应该是MembersProfile吗?我<强>名词强> mbers
[表( “PlayersGameDetials”)] 另一个错字?细节不是Det ia ls。
我建议手动创建与您的代码第一类匹配的数据库表,并确保没有拼写错误,并在数据库中的表上设置主键以匹配类中的[Key]属性。
我的模型中也有以下覆盖,以控制表名的复数。
此外,如果你想控制DbConext的目标,你可以添加自己的构造函数
public class DartConnection : DbContext
{
public DartConnection()
{
// override the connection string
this.Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["MyAppSettingDB"].ConnectionString;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}