问题标签 [datacontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
347 浏览

wpf - 与 DataContext 的数据绑定

我在这里做错了什么?我正在尝试DataTemplate使用对象内部的集合创建一个DataContext,如下所示:

C#:

XAML:

通过使用继承自 的类,我已经更容易做到这一点Collection<T>,但由于许多原因,我无法这样做来解决这个问题。非常感谢任何建议。

谢谢!

0 投票
1 回答
922 浏览

c# - MyDataContext.dbml 下的 .cs 文件是做什么用的?

MyDataContext.dbml 下的那个单独的(当前为空的)文件是什么?

目录结构:

0 投票
1 回答
157 浏览

c# - C#:如何查看 Linq2SQL 实体是否在数据库中

我想检查一个实体是否已经添加到数据库中。a那么,我怎样才能看到和之间的这种区别b

为了更清楚,如果我有这个:

如何查看是否thing需要插入?

0 投票
5 回答
1703 浏览

c# - Web 应用程序中的 LinqToSql 静态 DataContext

在我遇到的一个Web应用程序中,我在处理LinqToSQL时发现了以下代码来处理DataContext

然后稍后引用它:

在处理 LinqToSQL 时,我一直在研究最佳实践。

我不确定在处理 DataContext 不是 ThreadSafe 并保留它的静态副本时所采取的方法。

这是采用 Web 应用程序的好方法吗?

@ Longhorn213 - 根据您所说的以及因此我对 HttpContext 的了解越多,我认为您是对的。但是在我继承的应用程序中,这令人困惑,因为在每个方法的开头,他们都在重新查询数据库以获取信息,然后修改数据上下文的该实例并提交更改。

由此看来,我认为这种方法应该被劝阻,因为它给人一种错误的印象,即数据上下文是静态的并且在请求之间持续存在。如果未来的开发人员认为在方法开始时重新查询数据,因为他们认为数据已经存在,他们可能会遇到问题并且不明白为什么。

所以我想我的问题是,在未来的发展中应该不鼓励这种方法吗?

0 投票
2 回答
3965 浏览

c# - 从 DataContext 获取值到 MarkupExtension

我正在使用 MV-VM 模式

在我的虚拟机中,我有类似的代码

我有一个标记扩展,我想从中使用所述文档

我创建了附加属性 Foo.Document,并将其附加到我的页面(页面的 DataContext 设置为我的 ViewModel 类的实例

(为了不必每次使用标记扩展时都将其作为参数输入)

现在,在我的标记扩展中,当我尝试读取 Document 附加属性时,我总是得到一个空文档。通过调试绑定,在运行标记扩展后,附加属性会获得正确的值,这似乎是一个计时问题。

有可能让它以某种方式工作吗?

0 投票
1 回答
244 浏览

stored-procedures - 除非我再次初始化,否则删除的行会保留在我的数据上下文中

我有一个数据上下文,说 myDataContext,它有几个类(表)和存储过程,其中一个直接从数据库中删除(逻辑需要这样做),但是,除非我再次初始化,否则删除的行将保留在 myDataContext 中。

有没有办法避免这种情况?存储过程成功地从数据库中删除了记录,但在我下次打开表单之前,记录仍然存在。

0 投票
5 回答
1026 浏览

c# - DbLinq - 缓存问题

我在 ASP.NET MVC 网站中使用 linq to sql for MySql(使用 DbLinq)。我有一个奇怪的缓存问题。在我的 Repository 类中考虑以下方法:

'MyDataContext' 是 DbLinq 生成的到我的数据库的映射,它继承自 DataContext。我没有在这里重用 datacontext(上面的代码看起来有点傻,但我想绝对确定这不是一些 datacontext / mysqlconnection 重用问题)。

发生的情况是,无论我使用什么 userId 调用两种方法中的任何一种,结果都保持不变。时期。尽管我可以看到repo.Messages有超过 10 个结果,并且具有不同MessageFromMessageTo值,但我只得到了第一个查询的结果。因此,如果我调用GetInbox(4374)它会给我消息 A 和消息 B。GetInbox(526)之后调用仍然给我消息 A 和 B,即使有消息C 和 D的用户ID 为 526。我必须重新启动应用程序才能看到任何更改

这里发生了什么?我确信我做的事情是如此愚蠢,以至于当有人向我指出时我会感到羞耻。如果我没有做一些非常愚蠢的事情,那么我会觉得这个问题很奇怪。我读到不重用 DataContext,但我不是。为什么会出现这个缓存问题?下面是我的控制器代码,但我怀疑它是否重要:

虽然在 SO 上有类似的问题,但我还没有找到这个确切问题的答案。非常感谢!

更新:将代码更改为:return repo.Messages.ToList().Where(m => m.MessageFrom == userId);修复它,然后它工作正常。似乎是一些缓存问题。但是,我当然不想那样修复它。更改代码以便在查询后不释放数据上下文并不能解决问题。

0 投票
2 回答
2137 浏览

linq - Detect a DB Connection error using Linq?

Is it possible to detect an error in a connection before we get an application "Transport-level error" using Linq?

Lets say that I have a SQL server called SQLServer1, and I am running an application that connects to that server using LinQ to get some information.

I decide to change the server Name to SQLServer2. The next time my application run I will get an error like this:

"A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)"

Because LinQ doens't know that there was a change!

How can I catch this during runtime? Is it possible to extend the DataContext class to check somehow the connection before getting the data?

Thanks!

0 投票
2 回答
1282 浏览

asp.net-mvc - 为什么我的 DataContext 仅在一个操作中为空?

我的 BaseController 上有一个名为 DataContext 的属性,它保存我的 LINQ to SQL 数据上下文(或用于测试的假上下文)。使用无参数构造函数时(换句话说,当向 ASP.NET MVC 发出请求时),我的 LINQ to SQL 数据上下文的新实例被分配给属性:

同样在我的 BaseController 中,我设置了一些全局 ViewData 项:

这几乎适用于所有操作。唯一不起作用的是我的 AccountController 上的 Logout 操作:

这会在 BaseController.OnActionExecuting 期间引发 NullReferenceException。执行该特定操作时,DataContext 属性为空。

为什么这只发生在一个动作上?

注意: IDataContextWrapper 和 DataContextWrapper 只是包装了 LINQ to SQL DataContext 对象的现有功能,以便在单元测试中可以用假上下文替换它。它自己不会进行任何处理,而是将其留给底层的 DataContext,所以我很确定这不是问题所在。

0 投票
4 回答
9726 浏览

wpf - 重新绑定到 WPF Datagrid 的 Datacontext

我不敢相信我被这个相当简单的事情难住了。我最初在 WPF datagrid codeplex 讨论中发布了这个,但没有得到回应。所以我在这里尝试:

我似乎找不到办法做到这一点。我创建了一个数据网格,其数据上下文最初填充了表中的行。我已经实现了一个搜索功能,它将根据条件返回一些行。假设我只想显示那些行,如何销毁最初创建的数据上下文并添加新过滤的集合?

我天真地开始这样做:

(后期编辑:我似乎无法在这里输入泛型代码——下一行中的转换应该将 datagrid.Items 转换为 MyType(例如))

IEnumerable rows = datagrid.Items.Cast();

IEnumerable filteredRows = rows.Where(row => row.someCondition == true);

我现在如何让我的数据网格只显示filteredRows?只是在做:

数据网格.DataContext = null;

datagrid.DataContext = 过滤行;

不起作用(由于某种原因,它甚至闻起来很愚蠢)。

我还需要做相反的事情(一旦我得到这个工作)。一些按钮单击应该允许用户“清除”搜索结果并将 DataContext 重新插入“行”(在上面的片段中)。

我错过了什么?