3

エンティティタイプ、主キーの名前、およびプライマリIDのGUIDがあります。LinqToSqlでそのようなIDの要素を取得したいと思います。

model.GetTable<T>().Where(t => here equality  );

その式を自分で生成する必要があると思いますが、方法がわかりません:(

4

2 に答える 2

1

http://blog.dynback.com/index.php/2008/11/architecture/database/repository-in-linq-to-sql-getbyid-part/

調査結果!見てください!

于 2008-11-28T17:54:30.197 に答える
0

楽しみにしていて、コンパイラコードによって生成されたものを検索した後、Reflectorでこのラムダの作成を見つけました。

    public static T GetById(Guid id)
    {
        Type entType = typeof(T);

        if (!CheckTable(entType)) {
            throw new TypeLoadException(string.Format(
                "{0} is not Table Entity, has no attribute Table", entType.FullName));
        }

        string property = GetPrimaryKeyName(entType).Name;

        ParameterExpression cs;
        var lambda = Expression.Lambda<Func<Personal, bool>>(
                Expression.Equal(
                        Expression.Property(
                                cs = Expression.Parameter(typeof(T), "p"), 
                                entType.GetProperty(property).GetGetMethod()
                        ), 
                        Expression.Constant(id), 
                        false, 
                        typeof(Guid).GetMethod("Equals")
                ), new ParameterExpression[] { cs }
        );

        return Connection.Model.GetTable<T>().Single(lambda);
    }

必要なものですが、コンパイラの例外があります。

エラー5メソッド'System.Linq.Enumerable.Single(System.Collections.Generic.IEnumerable、System.Func)'の型引数を使用法から推測できません。タイプ引数を明示的に指定してみてください。D:\ Projects \ Own \ Yabeda \ Source \ trunk \ med \ Yabeda.Med.Mvc \ Data \ Opera.cs 48 20 Yabeda.Med.Mvc

このエラーの意味がわかりません!

于 2008-11-27T13:00:34.733 に答える