Entity framework 开发将定义.mdf数据库的实体框架类

Entity framework 开发将定义.mdf数据库的实体框架类,entity-framework,sql-server-express,Entity Framework,Sql Server Express,我正在尝试开发实体框架类,该类将定义一个已经创建并填充的.mdf数据库,最终实际创建并填充它 错误: 在模型生成过程中检测到一个或多个验证错误: testclass.test::EntityType“test”未定义键。定义此EntityType的键。 testData:EntityType:EntitySet“testData”基于未定义键的类型“test” 代码: 使用System.Data.Entity; 命名空间测试类 { 公开课考试 { 公共int idt{get;set;} 公共字符

我正在尝试开发实体框架类,该类将定义一个已经创建并填充的.mdf数据库,最终实际创建并填充它

错误:

在模型生成过程中检测到一个或多个验证错误:

testclass.test::EntityType“test”未定义键。定义此EntityType的键。
testData:EntityType:EntitySet“testData”基于未定义键的类型“test”

代码:

使用System.Data.Entity;
命名空间测试类
{
公开课考试
{
公共int idt{get;set;}
公共字符串日期时间{get;set;}
公共字符串col1{get;set;}
公共字符串col2{get;set;}
公共字符串col3{get;set;}
}
公共类TestDbContext:DbContext
{
公共DbSet testData{get;set;}
}
公共类测试库
{
公共列表Gettest()
{
TestDbContext TestDbContext=新的TestDbContext();
返回testDbContext.testData.ToList();
}
}
}
连接字符串:

<connectionStrings>
   <add name="TestDbContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=C:\folders\testclass\testclass\App_Data\Data.mdf;User Instance=true;" providerName="System.Data.SqlClient" />
</connectionStrings>

您的代码存在一些问题:

  • 主要原因是实体上缺少主键:如果某些键的名称与约定相匹配,EF可以推断出它们的名称:“Id”、“Id”、“testId”。。。因此,请使用其中一个标准名称,或使用
    [key]
    属性将属性明确标记为主键:

    [Key]
    public int idt { get; set; }
    
  • 要确保正确清理由
    DbContext
    分配的资源,应使用
    块将其用法包装在
    中:

    using (TestDbContext testDbContext = new TestDbContext())
    {
         return testDbContext.testData.ToList();
    }
    
  • 在.Net中,命名约定是:CamelCase用于除局部变量和字段以外的所有内容;所以
    testclass
    应该是
    testclass
    col1
    应该是
    col1
    testData
    应该是
    testData

using (TestDbContext testDbContext = new TestDbContext())
{
     return testDbContext.testData.ToList();
}