EntityFramework SqlQuery不适用于自定义映射(DataAnnotation列)

时间:2013-07-18 20:43:38

标签: entity-framework ef-code-first data-annotations code-first

我在VS 2012中使用EF 5.0(CodeFirst),但在使用SqlQuery进行查询时遇到问题。问题发生在实体的属性名称和数据库中列的名称之间的映射中。

我的实体(模特):

[Table("Teste")]
public class TesteEntity
{
    [Column("Teste_Id")]
    public int Id { get; set; }

    [Required]
    public bool IsAdministrator { get; set; }

    [Required]
    public string Name { get; set; }

}

当我运行查询时,出现错误。

Rotine:

List<TesteEntity> list = dataContext.Database.SqlQuery<TesteEntity>("SELECT * FROM Teste").ToList();

错误:

The data reader is incompatible with the specified '....TesteEntity'. A member of the type, 'Id', does not have a corresponding column in the data reader with the same name.

数据库中的表结构:

CREATE TABLE [dbo].[Teste](     [Id] [int] IDENTITY(1,1) NOT NULL,
    [IsAdministrator] [bit] NOT NULL,   [Name] [nvarchar](max) COLLATE
Latin1_General_CI_AS NOT NULL,  CONSTRAINT [PK_dbo.Teste] PRIMARY KEY
CLUSTERED  (    [Id] ASC )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF)
ON [PRIMARY] ) ON [PRIMARY]

显然,当我使用DataAnnotation [Column(“Teste_Id”)]并重新创建表时,一切正常,但想知道是否必须使用DataAnnotation [Column(“Teste_Id”)]进行此查询。

由于

1 个答案:

答案 0 :(得分:0)

请写下以下代码:

[Table("Teste")]
public class TesteEntity
{
    [Column("TesteId")]
    [Key]
    public int Id { get; set; }

    [Required]
    public bool IsAdministrator { get; set; }

    [Required]
    public string Name { get; set; }
}

我建议你编写你的代码EF CF如何正常工作。对于您的代码,如下:

public class Teste
{
    public int TesteId{ get; set; }

    [Required]
    public bool IsAdministrator { get; set; }

    [Required]
    public string Name { get; set; }
}