是否有相当于 DataContext 类的 LINQPad?
我刚刚开始使用 LINQPad,到目前为止我很喜欢它,但我遇到的大多数 LINQ TO SQL 教程都使用由 Visual Studio 生成的 DataContext 类来持久更新等。我对 LINQ TO SQL 也相当陌生所以我的问题是 LINQPad 中与以下内容等效的内容是什么(如果有的话)...
MyDbDataContext db = new MyDbDataContext();
...
db.SubmitChanges();
I've just begun using LINQPad and so far I like it but most tutorials I have come across for LINQ TO SQL make use of a DataContext class which is generated by Visual Studio for persisting updates etc. I am also fairly new to LINQ TO SQL so my question is what is the equivalent of the following in LINQPad (if there is one)...
MyDbDataContext db = new MyDbDataContext();
...
db.SubmitChanges();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
简短的回答:您不需要自己创建 DataContext。 LINQPad 附带了很多示例,请看一下。
当您将 LINQPad 连接到数据库时,它会为您创建 DataContext。 DataContext 的表 (
Table
) 和SubmitChanges()
可作为本地成员使用。例如,LINQPad 的默认“C# 表达式”模式你可以这样写:
在 LINQPad 的“C# 语句”模式中:
LINQPad 的
Dump()
扩展方法非常有用,可以在任何对象或集合上调用(在 LINQPad 的语句模式)以显示下面的结果。请注意,您甚至不需要连接到数据库即可使用 LINQPad。 您可以使用内存中的集合:
事实上,您甚至不需要使用 LINQ 即可使用 LINQPad。 它也可以很好地用作代码片段编译器。
Short answer: You do not need to create the DataContext yourself. LINQPad comes with lots of samples, take a look at them.
When you connect LINQPad to a database, it creates the DataContext for you. The DataContext's tables (
Table<T>
) andSubmitChanges()
are available as local members.For example, LINQPad's default "C# Expression" mode you can just write:
In LINQPad's "C# Statement" mode:
LINQPad's
Dump()
extension method is very useful can be called on any object or collection (in LINQPad's statement mode) to show the results below.Note that you don't even need to connect to a database to use LINQPad. You can work with in-memory collections:
In fact, you don't even need to use LINQ to use LINQPad. It also works great as a snippet compiler.
正如之前提到的,您不需要创建 DataContext,因为 LINQPad 默认会创建一个 DataContext。
但以防万一,您需要一个第二个 DataContext(对于同一个数据库),您可以使用
这将创建第二个数据上下文,就像自动创建的一样。
As it was mentioned before, you don't need to create a DataContext as LINQPad creates one by default.
But just in case, you need a second DataContext (for the same database) you could use
This will create a second datacontext just like the automatically created one.
我知道这已经有了答案,我同意卢卡斯的观点,但想添加一些可能对这个问题的读者有所帮助的内容。
如果需要,您可以从程序集中加载自己的 DataContext。
无论您加载自己的上下文还是让 LinqPad 为您构建一个上下文,您都在 LinqPad 生成的“UserQuery”类的上下文中运行。
以下 C# 语句显示了这一点:
此 UserQuery 类派生自 DataContext。 在此示例中,我让 Linqpad 为 AdventureWorks 数据库构建一个数据上下文:
如果我加载自己的名为 MyDataContext 的 DataContext:
I know this already has an answer and I agree with Lucas but wanted to add a couple of things that might help readers of this question.
You can load your own DataContext from the assembly if you want to.
Regardless of whether you load your own Context or let LinqPad build one for you, you are running in the Context of a "UserQuery" class that is generated by LinqPad.
The following C# statment shows this:
This UserQuery class derives from a DataContext. In the this example I let Linqpad build a datacontext for the AdventureWorks database:
If I load my own DataContext called MyDataContext:
根据 jaraics 的回复,我发现 UserQuery 构造函数需要一个连接字符串。 至少 LINQPad 版本 4.37.11 是这样。 因此,我从 LINQPad 创建的 UserQuery 实例中检索连接字符串,并使用它来创建我自己的实例。
当我使用上面的代码时,它给了我第二个 DataContext。
Building on the reply from jaraics, I found that the UserQuery constructor requires a connection string. At least it does for LINQPad version 4.37.11. Therefore, I retrieved the connection string from the UserQuery instance created by LINQPad and used that to create my own instance.
When I used the above code, it gave me a second DataContext.
根据 @Thymine 对 @DRS9222 的答案的评论,您可以简单地使用类似的内容:
然后,这在 LinqPad 和您的 IDE 之间变得非常可转移,而不必修复或删除上下文。
As per @Thymine 's comment on @DRS9222 's answer, you can simply use something like:
This becomes pretty transferable between LinqPad and your IDE then, rather than have to fixup or remove the context.
每当我在主要部分之外添加静态方法时,我都可以访问以下示例:
I can access with following sample whenever I add a static method outside the main part: