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; }
}
クエリを実行すると、エラーが発生します。
ロチン:
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")] を使用してこのクエリを実行する必要があるかどうかを知りたかったのです。
ありがとう