- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我在已编译的查询中包含一个函数时,幕后会发生什么,就像我在这里使用 DataConvert.ToThema() 将表对象转换为我的自定义业务对象一样:
public static class Queries
{
public static Func<MyDataContext, string, Thema> GetThemaByTitle
{
get
{
var func = CompiledQuery.Compile(
(MyDataContext db, string title) =>
(from th in elan.tbl_Thema
where th.Titel == title
select DataConvert.ToThema(th)).Single()
);
return func;
}
}
}
public static class DataConvert
{
public static Thema ToThema(tbl_Thema tblThema)
{
Thema thema = new Thema();
thema.ID = tblThema.ThemaID;
thema.Titel = tblThema.Titel;
// and some other stuff
return thema;
}
}
然后这样调用它
Thema th = Queries.GetThemaByTitle.Invoke(db, "someTitle");
显然该函数没有被翻译成 SQL 或其他东西(怎么可能),但是当我在 VS2010 中设置断点时它也不成立。
它工作没有问题,但我不明白如何或为什么。那里到底发生了什么?
最佳答案
您的 DataConvert.ToThema()
静态方法只是创建一个具有默认构造函数的类型的实例,并设置各种属性,对吗?如果是这样,它与以下内容并没有太大区别:
(from th in elan.tbl_Thema
where th.Titel == title
select new Thema{ID=th.ThemaID, Titel=th.Titel, etc...}
).Single());
当您调用 Queries.GetThemaByTitle
时,将编译一个查询。 (顺便说一句,您调用它的方式实际上可能会或可能不会给您预编译带来任何好处)。那个'Query'实际上是一个代码表达式树,其中只有一部分用于生成发送到数据库的SQL代码。
它的其他部分将生成 IL 代码,这些代码正在获取从数据库返回的内容并将其放入某种形式以供您使用。 LINQ(EF 或 L2S)足够聪明,能够接受您的静态方法调用并从中生成 IL 来执行您想要的操作 - 也许它是通过内部 delegate
或类似的方式来实现的。但最终,它不需要与我上面替换的生成的内容有(太多)不同。
但是请注意,无论您返回的是什么类型,都会发生这种情况;在某处,正在生成将 DB 值放入 CLR 对象的 IL 代码。那是那些表达式树的另一部分。
如果您想更详细地了解这些表达式树及其涉及的内容,我必须为您挖掘,但根据您的问题我不确定这是否是您要查找的内容。
关于c# - 在编译查询中包含 "offline"代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582559/
sls 离线命令停留在“离线:启动离线 SQS:本地/us-east-1”。 "serverless-offline": "^6.8.0", "serverless-offline-sqs": "4.
需要关于使用 redux 的大型 React Native 移动应用程序使用哪个库的建议? redux-离线 或 react-native-offline ? 我需要定期检查连接状态,根据连接状态呈现
我正在使用 Redux Offline在我的 Angular 项目中,现在我想在离线模式下启用取消发件箱中的项目。基本上,我只想过滤发件箱数组以删除我想要取消/修改的项目。 我的问题是它从我在顶级 r
我有一个只能离线工作的应用程序,但由于项目的设置方式,它需要互联网连接启动。我知道问题出在 spring.xml 中的 xsi:schemaLocation 属性,但对 Spring 不太了解,不知道
这就是一大堆错误。我已经安装了所有最新版本的Ffltter和Android Studio,还重新安装了Android SDK,并运行了ADB KILL-SERVER和ADB START-SERVER命
这就是一大堆错误。我已经安装了所有最新版本的Ffltter和Android Studio,还重新安装了Android SDK,并运行了ADB KILL-SERVER和ADB START-SERVER命
我在 Android 4.1 版本和代理后面。我已经设置了代理设置并且 sdk 下载工作正常。但是当我创建一个新项目时,它会抛出错误: Could not GET 'https://dl.google
我正在尝试与服务 worker 合作以缓存并遇到经过身份验证的调用的问题。我目前正在使用 https://css-tricks.com/serviceworker-for-offline/ ( htt
即使用户清除了缓存和 cookie,我也想让我的网站离线可用。有可能吗?我也在处理数据库。是否可以离线处理数据库? 最佳答案 用户可以存储 本地 的副本单例网页使用 Chrome(右键单击另存为),它
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 Improve this qu
我想从服务器下载 mp4 视频到我的 Android 设备。我希望这个视频以 block (加密)的形式存储,并且应该在视频播放时实时组合。如何着手解决这个问题。 最佳答案 对于这样的样本 publi
我一直在与社交集成和授权的 oauth 框架密切合作。我知道,像 Facebook 一样,Twitter 为其应用程序实现了一个 oauth Hook 。我的问题是,有没有办法让访问 token 永远
我在我这边使用 OpenStreetMap,但它可以通过他们的页面工作。我想知道是否可以下载一些 map 并使用本地服务器。到目前为止,我发现了这样的事情: http://openlayers.org
我正在考虑使用 Firebase 使用 PhoneGap 和 HTML5 应用程序缓存编写移动应用程序。 让我们假设每个用户都有一个 TODO 项目列表。如果应用程序在手机离线时启动,它是否能够从上一
我正在运行我的 nodejs 代码并且还安装了无服务器( npm i -g serverless )但是在使用命令 sls offline start --CacheInvalidations 运行它
这在以下情况下很有用: 服务器已关闭,客户端无法连接进行实时同步 没有互联网连接 用户不想上网,但想使用应用程序; 最佳答案 是的!这大部分已经在 Meteor 中实现了。 如果与服务器的连接丢失,客
在c#中没有互联网连接时,有没有办法获取计算机的mac地址?当我有连接时我能得到,但当我离线时我不能得到。但强烈要求我的工作需要 mac 地址。 我的在线代码; var macAddr =
我想在此处 map 中离线显示转弯导航。我也下载了 map 并将 MapEngine 设置为 false 以在离线模式下使用它,但在计算路线时返回 map 数据不足错误。如何在离线模式下使用此处 ma
该应用程序执行简单的注册(使用 FirebaseAuth、FirebaseUI 和 Google 登录)。认证时成功 , 我拿firebaseUser.userId并使用它从实时数据库中获取用户配置文
在运行 Flutter doctor 以查看为什么我的物理 LG G6 设备没有被拿起后,我发现“设备离线”。 我试过谷歌搜索,拔下并重新插入设备。 似乎没有任何效果。 这是什么意思?我的设备确实启用
我是一名优秀的程序员,十分优秀!