Tag: datacontext

如果底层DataContext为null,如何隐藏控件?

我的视图模型中有一个对象,它有一堆属性,其中一些偶尔会为null。 如果这些特定控件为空,我不想只显示一些控件。 如果绑定为null,我将如何隐藏控件? 我在想某种转换器,但不知道我是怎么做的。 有任何想法吗? 编辑:对不起,我应该提一下,这也将在Silverlight中,所以我不确定Style触发器是否会起作用……?

DataContext的例外情况

我一直在互联网上搜索,但我似乎无法找到它。 DataContext可以抛出哪些exception? 或者更具体地说,DataContext.SubmitChanges()方法抛出什么exception? 编辑 作为参考,这里列出了可能由L2S DataContext引发的已知exception: SQLEXCEPTION ChangeConflictException DuplicateKeyException ForeignKeyReferenceAlreadyHasValueException OutOfMemoryException(未正确处理DataContext时)

如何在XAML中实例化DataContext对象

我希望能够在XAML中为我的WPF StartupUri窗口创建DataContext对象的实例,而不是创建代码然后以编程方式设置DataContext属性。 主要原因是我不需要访问外部创建的对象,我不想仅仅为了设置DataContext而编写代码。 我确定我已经在某处读过如何在XAML中实例化DataContext对象,但我无法在任何常见的地方找到它…

使用LINQ to SQL进行更新的最有效方法

我可以更新下面函数中给出的员工记录,还是首先要查询员工集合,然后更新数据? public int updateEmployee(App3_EMPLOYEE employee) { DBContextDataContext db = new DBContextDataContext(); db.App3_EMPLOYEEs.Attach(employee); db.SubmitChanges(); return employee.PKEY; } 或者我必须做以下事情? public int updateEmployee(App3_EMPLOYEE employee) { DBContextDataContext db = new DBContextDataContext(); App3_EMPLOYEE emp = db.App3_EMPLOYEEs.Single(e => e.PKEY == employee.PKEY); db.App3_EMPLOYEEs.Attach(employee,emp); db.SubmitChanges(); return employee.PKEY; } 但我不想使用第二种选择。 有没有有效的方法来更新数据? 我通过两种方式得到此错误: 已尝试附加或添加非新的实体,可能已从另一个DataContext加载。 这不受支持。

使用Unity在多个类型中注入相同的DataContext实例

假设我有IRepository接口及其实现SqlRepository,它将LINQ作为参数作为SQL DataContext的参数。 假设我有IService接口及其实现服务,它需要三个IRepository,IRepository和IRepository。 演示代码如下: public interface IRepository { } public class SqlRepository : IRepository { public SqlRepository(DataContext dc) { … } } public interface IService { } public class Service : IService { public Service(IRepository r1, IRepository, IRepository) { … } } 在创建Service类以使用相同的DataContext注入所有三个存储库时是否有任何方法?

如何摆脱DataContext InitializeComponent中的StackOverflowexception?

我是wpf c#的新手,尝试一些示例应用程序,问题是当我在xaml中提到DataContext时, InitializeComponent被递归调用并显示 mscorlib.dll中发生了System.StackOverflowException 这是我的XAML标记: XAML.cs : private ICommand m_ButtonCommand; public ICommand ButtonCommand { get { return m_ButtonCommand; } set { m_ButtonCommand = value; } } public MainWindow() { InitializeComponent(); ButtonCommand = new RelayCommand(new Action(ShowEmployees)); }

WPF用户控件中“DataContext = this”有什么问题?

我在某处读到在用户控件的构造函数中设置DataContext = this是不好的做法(虽然无法找到)。 为什么这是不好的做法? 有什么选择?

为什么重用DataContext会对性能产生负面影响?

经过大量 研究和一些错误后 ,我修改了我的代码,以便每次查询数据库或插入数据时都会创建一个新的DataContext。 并且经常查询数据库 – 对于处理的250k个事务中的每一个,在插入事务之前,将查询数据库以获取客户ID,部门ID和类别。 所以现在我正在尝试优化代码,因为它每秒只处理大约15个事务。 我删除了一些无关的查询并添加了一些索引,并将其提高到30 /秒。 然后我想,尽管每个人都说DataContext是轻量级的,但是每个事务需要花费4倍的时间来创建一个新的,所以我尝试重用DataContext。 我发现,令我惊讶的是,重复使用上下文会导致性能降低到每秒10个事务! 为什么会这样呢? 是因为DataContext将实体缓存在内存中,并在查询数据库之前首先搜索其内存列表? 因此,例如,如果我正在寻找名为“MCS”的客户的客户ID(主键),并且客户名称列上有聚簇索引,以便数据库查询速度快,则内存中查找会慢吗? 创建/部署如此多的数据库连接是否会降低速度,或者这只是另一种过早的优化? 如果确实如此,是否有办法重用DataContext但是它为每个linq-to-sql查询执行实际的数据库查询?

如何从LINQ DataContext.SubmitChanges()获取TSQL查询

我正在使用Linq to SQL。 我有一个DataContext,我就是.SubmitChanges()。 插入标识字段时出错,我希望看到它用于插入此标识字段的查询。 我在快速监视器中看不到查询本身; 我在哪里可以从调试器中找到它?

数据上下文应该是静态的吗?

我正在使用entity framework4,我在其中一个基类中为模型创建了一个datacontext 。 但是我在分析它时每次尝试查询时都会创建上下文,所以我想把它设置为静态,这样它只创建一次并且总是重用。 您是否认为这是最好的方法,数据/对象上下文应始终保持静态? 使它静止是否有任何缺点? 数据上下文应该是静态的还是非静态的? 欢迎任何想法或建议。