1
私はEF 6.0の初心者であり、使いやすいDALを設計し始めました。ここ は、各エンティティ上のすべての動作のタスクのための私のインターフェイスである:ここwhere where句と列制限をSQL Serverに送信する前にEFクエリに適用します
public interface IEntity<T>
{
T Insert(T NewItem);
T Update(T ModifiedItem);
bool Delete(T Selected);
bool DeleteByID(int ItemID);
List<T> Select(Func<T, bool> Query);
IQueryable<T> GetQuery();
}
は、「グループ」エンティティの選択方法についての私の実装です:
public bool Select(Func<DataAccess.Model.Group, bool> Query, out List<Business.Entity.Login.LoginUser> Output)
{
IQueryable<DataAccess.Model.Group> Connection = GetQuery();
Output = Connection.Where(Query).ToLoginUser().ToList();
return true;
}
私はのFuncを使用してフィールド上の全てのレンジリミッターを受け取ることになります<、>パラメータと、私は必要としない列の一部非表示にする拡張メソッドの下に使用しています:
public static IEnumerable<BEntities.Login.LoginUser> ToLoginUser(this IEnumerable<DataAccess.Model.Group> Model)
{
return from A in Model select new Business.Entity.Login.LoginUser { Username = A.Name, Password = A.Identifier };
}
をしかし、何がactuallます
SELECT
[Extent1].[ID] AS[ID],
[Extent1].[Identifier] AS [Identifier],
[Extent1].[Name] AS [Name],
[Extent1].[ParentGroup] AS [ParentGroup],
[Extent1].[GroupPath] AS [GroupPath]
FROM[dbo].[Group] AS [Extent1]
このクエリでは、「Where」句または列の制限は表示されません。 私のミスはどこですか? < ...、...>式を使用して
「Func <...>」をすべて「式」に置き換えてください。 –