私はこのクラスを持っています
class abstract EntityBase
{
public abstract int Id {get; set; }
}
ここで、linq2sql で生成されたユーザー テーブルのクラスを少し変更します (ID のオーバーライドを設定します)。
public partial class User: EntityBase, INotifyPropertyChanging, INotifyPropertyChanged
{
...
public override int Id {...}
...
}
よりも、この関数を持つ別のテンプレート ヘルパー クラスがあります。
public static T SingleOrDefault(System.Linq.Expressions.Expression<Func<T, bool>> func)
{
System.Data.Linq.DataContext oDataContext = null;
T retData = GetAll(out oDataContext).SingleOrDefault(func);
if (retData != null)
{
retData.CurrentDataContext = oDataContext;
}
return retData;
}
そして、私はこのように使用します
Helper<EntityBase>.SingleOrDefault(t => t.Id == 3);
そして、次のようになります:クラスメンバーEntityBase`2.Idはマップされていません。問題は、User クラスではなく EntityBase の Id を使用しているため、ユーザー クラスから Id を参照できるように、これに対応するラムダ式をどのように作成できるかということです。私が明確だったことを願っています。
ありがとう。