相关疑难解决方法(0)

在C#中序列化和反序列化表达式树

有没有办法在C#中反序列化表达式,我想将表达式存储在数据库中并在运行时加载它们.

c# serialization expression-trees

89
推荐指数
4
解决办法
4万
查看次数

将LINQ表达式转换为没有DB Context的SQL Text

LINQ to SQL或LINQ to Entities已经能够将LINQ转换为SQL文本字符串.但是我希望我的应用程序在不使用db上下文的情况下进行转换 - 这反过来意味着一个活动的数据库连接 - 这两个提供者都需要.

我想将LINQ表达式转换为等效的SQL字符串for WHEREORDER BYclauses,而不需要DB上下文依赖项,以使以下存储库接口工作:

public interface IStore<T> where T : class 
{
     void Add(T item);
     void Remove(T item);
     void Update(T item);
     T FindByID(Guid id);

     //sure could use a LINQ to SQL converter!
     IEnumerable<T> Find(Expression<Func<T, bool>> predicate);
     IEnumerable<T> FindAll();
}
Run Code Online (Sandbox Code Playgroud)

它主要是我感兴趣的表达式树遍历和变换.有没有人知道我可以合并的现有库(nuget?)在这样的自定义上下文中使用?

因为它已经构建了我自己的工作"LINQ转换为SQL文本"工具,类似于这个表达式树到SQL示例,它在我上面的存储库中工作.它允许我编写这样的代码:

IRepository<Person> repo = new PersonRepository();
var maxWeight = 170;
var results = repo.Find(x => (x.Age > 40 || x.Age < 20) && x.Weight < maxWeight); …
Run Code Online (Sandbox Code Playgroud)

.net c# sql linq expression-trees

12
推荐指数
1
解决办法
5444
查看次数

Lambda表达式到Web API

我试图将Lambda表达式传递给Web API 2调用,但不确定如何使其工作.

我来给你一些背景知识

设置利用Entity Framework与数据库通信的Web API 2.

我的应用程序最终调用Web API 2以便能够与数据库通信.我的公司最终要求这样可以增加数据访问层的安全性.

我们在App Side上构建了一个存储库,可以很好地与Web API进行通信.但是,我们要添加的函数之一是包含Lambda表达式的FIND函数.

public IEnumerable<T> FindAll(Func<T, bool> exp)
{
    HttpClientHandler hndlr = new HttpClientHandler();
    hndlr.UseDefaultCredentials = true;
    HttpClient httpClient = new HttpClient(hndlr);

    httpClient.BaseAddress = new Uri(ADMS.Utilities.Settings.DALService);
    HttpResponseMessage response = httpClient.GetAsync(string.Format("api/{0}/{1}", typeof(T).Name, exp)).Result;

    if (response.IsSuccessStatusCode)
    {
       return response.Content.ReadAsAsync<IEnumerable<T>>().Result.ToList();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我现在的问题是在控制器的Web API 2端如何让它接受Lambda Expression?我需要在控制器中放置什么才能看到这个?我需要转换Lambda表达式吗?

c# lambda asp.net-web-api asp.net-mvc-5 asp.net-web-api2

4
推荐指数
1
解决办法
2951
查看次数