私は次のDbModel
ような構成を持っています:
modelBuilder.Entity<WishlistLine>()
.HasKey(w => w.PersistenceKey)
.Property(w => w.PersistenceKey)
.HasColumnName("WishlistLineId");
次の 2 つの方法でクエリを実行しています。
public IEnumerable<WishlistLine> FetchWishlistLinesUsingLogonName(string logonName)
{
return GetFromRawSql(@"
SELECT wl.* FROM WishlistLines wl
INNER JOIN Accounts a ON wl.AccountId = a.AccountId
LEFT JOIN Users u ON u.AccountId = a.AccountId
WHERE u.LogonName = @p0", logonName);
}
protected IEnumerable<TEntity> GetFromRawSql(string sqlQuery, params object[] parameters)
{
return _dbSet.SqlQuery(sqlQuery, parameters).ToList();
}
WishlistLines
問題なくEFを介してデータベースに「保存」できます。このクエリを実行すると、次のエラーが発生します。
The data reader is incompatible with the specified 'DataAccessLayer.DatabaseContext.WishlistLine'. A member of the type, 'PersistenceKey', does not have a corresponding column in the data reader with the same name.
を使用すると、返されたデータがエンティティにマップされることを理解しましたが、構成DbSet<T>.SqlQuery()
を無視しているようです。DbModel
エラー メッセージから判断 (推測) すると、間違ったデータ リーダーが使用されています。
それで:
A) 私は何か間違ったことをしていますか?
B) EF のDbModel
認識エンティティ マッパーを利用する方法はありますか?