私はMVC Storefrontコードを使い、リポジトリ、サービス、およびpocoであるモデル(dbml/dataコンテキスト外)のパスに従おうとしています。私がテストを書くのを始めて、理解できないようなことが起こるまでは、実際に従うのはかなり簡単です。IQueryable、Where、Guid and
私の場合、主キーはintフィールドの代わりにuniqueidentifierです。
この場合public IQueryable<Restaurant> All()
{
return from r in _context.Restaurants select new Restaurant(r.Id)
{
Name = r.Name
};
}
、レストランはもちろんのModels.Restaurantであり、_context.Restaurants.Restaurantない:リポジトリはのIQueryableを返します。
サービスクラスのフィルタリング(またはリポジトリのユニットテストでは)すべてに対して、()、これは予想と同じように動作します:
var results = Repository.All().Where(r => r.Name == "BW<3").ToList();
これはうまく動作しますが、1 Model.Restaurantを持っています。人々は、R => r.Idが[モデルであるからだと言ういくつか似の記事を見た場合
The member 'BurningPlate.Models.Restaurant.Id' has no supported translation to SQL.
:今、私はPKIDと同じことをしようとした場合:
var results = Repository.All().Where(r => r.Id == new Guid("088ec7f4-63e8-4e3a-902f-fc6240df0a4b")).ToList();
で失敗した場合。 Restaurants]は、linq2sql層が認識していないクラスレベルです。私にとっては、それは最初のバージョンがうまくいかないことを意味します。もちろん、私のpkがintの場合、それはうまく動作します。
ここで実際に何が起こっていますか?主は知っている、それは非常に直感的ではない1つの仕事と1つの仕事を持っている。私は何を誤解していますか?
そして、それは私の問題でした。おかげでロブ! – claco