开发将定义.mdf数据库的Entity Framework类

时间:2014-07-19 05:41:10

标签: entity-framework sql-server-express

我正在尝试开发实体框架类,该类将定义已创建并填充的.mdf数据库,直到实际创建并填充它。

错误:

  

在模型生成期间检测到一个或多个验证错误:

     

testclass.test :: EntityType'test'没有定义键。定义此EntityType的键   testData:EntityType:EntitySet'testData'基于没有定义键的'test'类型。

代码:

using System.Data.Entity;

namespace testclass
{
public class test
{
    public int idt { get; set; }
    public string datetime { get; set; }
    public string col1 { get; set; }
    public string col2 { get; set; }
    public string col3 { get; set; }
}
public class TestDbContext : DbContext
{
    public DbSet<test> testData { get; set; }
}
public class testRepository
{
    public List<test> Gettest()
    {
        TestDbContext testDbContext = new TestDbContext();
        return 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>

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题:

  • 主要是您的实体缺少主键:如果某些键的名称与某些约定相匹配,则EF可以推断出某些键:&#34; < strong> ID &#34;,&#34; ID &#34;,&#34; testId &#34; ...使用其中一个标准名称或使用[Key]属性明确将您的媒体资源标记为主键:

    [Key]
    public int idt { get; set; }
    
  • 为确保正确清理DbContext分配的资源,您应将其用于using块:

    using (TestDbContext testDbContext = new TestDbContext())
    {
         return testDbContext.testData.ToList();
    }
    
  • <。>

    在.Net中命名约定是: CamelCase ,除了局部变量和字段之外的所有内容;因此testclass应为Testclasscol1应为Col1testData应为TestData ...