我有一个窗口中包含的列表(见下文).窗口DataContext
有两个属性,Items
和AllowItemCommand
.
如何获取针对窗口的属性需要解析Hyperlink
的Command
属性DataContext
?
<ListView ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn Header="Action">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>
<!-- this binding is not working -->
<Hyperlink Command="{Binding AllowItemCommand}"
CommandParameter="{Binding .}">
<TextBlock Text="Allow" />
</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 我需要向第三方插件公开实体框架数据上下文.目的是允许这些插件仅获取数据,而不是让它们发出插入,更新或删除或任何其他数据库修改命令.因此,我如何只读取数据上下文或实体.
.net datacontext entity-framework readonly entity-framework-4
我经常比较不同数据库中表格中的数据.这些数据库没有相同的架构.在TSQL中,我可以使用DB> user>表结构(DB1.dbo.Stores,DB2.dbo.OtherPlaces)引用它们来提取数据以进行比较.我非常喜欢LINQPad的想法,但我似乎无法在同一组语句中轻松地从两个不同的数据上下文中提取数据.
我见过人们建议只是更改连接字符串以将数据从其他源提取到当前架构中,但正如我所提到的,这是不行的.我刚跳过常见问题解答中的一页吗?这对我来说似乎是一个相当常规的程序.
在"简单"的世界中,我希望能够简单地引用LINQPad创建的类型化数据文本.然后我可以简单地说:
DB1DataContext db1 = new DB1DataContext();
DB2DataContext db2 = new DB2DataContext();
从那里开始工作.
我正在集成SqlCacheDependency以在我的LinqToSQL datacontext中使用.
我在这里找到Linq查询的扩展类 - http://code.msdn.microsoft.com/linqtosqlcache
我已经连接了代码,当我打开页面时,我得到了这个例外 -
"未启用当前数据库的SQL Server Service Broker,因此不支持查询通知.如果您希望使用通知,请为此数据库启用Service Broker."
它来自global.asax中的这个事件
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
//In Application Start Event
System.Data.SqlClient.SqlDependency.Start(new dataContextDataContext().Connection.ConnectionString);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是......
如何在我的SQL Server 2008数据库中启用Service Broker?我试图运行此查询.. ALTER DATABASE tablename SET ENABLE_BROKER但它永远不会结束并且永远运行,我必须手动停止它.
一旦我在SQL Server 2008中设置了这个设置,它会过滤到我的DataContext,还是我还需要配置它?
谢谢你的帮助
Truegilly
我正在创建一个UserControl
我想要使用这样的东西:
<controls:ColorWithText Color="Red" Text="Red color" />
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经实现了类似的控件:
<UserControl x:Class="Namespace.ColorWithText" Name="ThisControl">
<StackPanel Orientation="Horizontal" >
<Border Width="15" Height="15" Background="{Binding Color, ElementName=ThisControl}" />
<TextBlock Text="{Binding Text, ElementName=ThisControl}" />
</StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
where Color
和Text
是代码中定义的控件的依赖项属性.这有效,但ElementName
每次指定似乎都没有必要.
另一个有用的选择是使用
<UserControl x:Class=… DataContext="{Binding ElementName=ThisControl}" Name="ThisControl">
Run Code Online (Sandbox Code Playgroud)
并没有指定ElementName
s,但这对我来说似乎也不是一个干净的解决方案.
我有两个问题:
<UserControl DataContext="{RelativeSource Self}">
?我知道这可能是意见,但我正在寻找最佳实践.
据我所知,IQueryable<T>
实现IEnumerable<T>
,所以在我的DAL中,我目前有方法签名,如下所示:
IEnumerable<Product> GetProducts();
IEnumerable<Product> GetProductsByCategory(int cateogoryId);
Product GetProduct(int productId);
Run Code Online (Sandbox Code Playgroud)
我应该IQueryable<T>
在这里使用吗?
这两种方法的优点和缺点是什么?
请注意,我打算使用Repository模式,所以我将有一个这样的类:
public class ProductRepository {
DBDataContext db = new DBDataContext(<!-- connection string -->);
public IEnumerable<Product> GetProductsNew(int daysOld) {
return db.GetProducts()
.Where(p => p.AddedDateTime > DateTime.Now.AddDays(-daysOld ));
}
}
Run Code Online (Sandbox Code Playgroud)
我应该改变我IEnumerable<T>
的IQueryable<T>
吗?一个或另一个有哪些优点/缺点?
实体框架生成的上下文对象不是线程安全的.
如果我使用两个独立的实体上下文,每个线程一个(并SaveChanges()
在每个上调用),这会是线程安全的吗?
// this method is called from several threads concurrently
public void IncrementProperty()
{
var context = new MyEntities();
context.SomeObject.SomeIntProperty++;
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我相信实体框架上下文实现了某种"计数器"变量,它跟踪上下文中的当前值是否是新鲜的.
在WPF数据绑定中,我知道你有DataContext
一个告诉元素它将绑定到哪个数据以及ItemsSource
哪个"绑定".
但是,例如在这个简单的例子中,它似乎没有ItemsSource
做任何有用的事情,因为,除了绑定它之外,你还想要Element做什么DataContext
呢?
<ListBox DataContext="{StaticResource customers}"
ItemsSource="{Binding}">
Run Code Online (Sandbox Code Playgroud)
在更复杂的例子中ItemsSource
,你有路径和来源似乎正在侵占其领土DataContext
.
ItemsSource="{Binding Path=TheImages, Source={StaticResource ImageFactoryDS}}"
Run Code Online (Sandbox Code Playgroud)
了解这两个概念的最佳方法是什么,以了解何时以及如何在各种编码方案中应用它们?
为了在ASP.net 3.5应用程序中完全使用LinqToSql,有必要创建DataContext 类(通常使用VS 2008中的设计器完成).从UI的角度来看,DataContext是您希望通过LinqToSql公开的数据库部分的设计,并且是设置LinqToSql的ORM功能所不可或缺的.
我的问题是:我正在建立一个使用大型数据库的项目,其中所有表都通过外键以某种方式互连.我的第一个倾向是创建一个巨大的DataContext类来模拟整个数据库.这样我理论上可以(虽然我不知道在实践中是否需要这样)使用通过LinqToSql生成的外键连接,可以轻松地在我的代码中的相关对象之间进行切换,插入相关对象等.
但是,在考虑之后,我现在认为创建多个DataContext类可能更有意义,每个类与我的数据库中的特定命名空间或逻辑相关部分相关.我主要担心的是,对于与数据库的特定区域相关的单个操作,实例化和处理一个巨大的DataContext类将对应用程序资源施加不必要的强制.此外,创建和管理较小的DataContext文件比一个大文件更容易.我将失去的是,数据库的某些远程部分无法通过LinqToSql导航(即使一系列关系在实际数据库中连接它们).此外,还有一些表类存在于多个DataContext中.
有关多个DataContexts(对应于DB名称空间)是否适合代替(或除了)一个非常大的DataContext类(对应于整个DB)的任何想法或经验?
我有一些麻烦搞清楚如何设置正确的DataContext
一个ContextMenu
.
我有一组视图模型,他们是一个ItemsControl
.每个视图模型都有一组项目,这些项目也是另一个项目的来源ItemsControl
.每个项目用于绘制具有的图像ContextMenu
.将MenuItems
在ContextMenu
需要绑定到视图模型的一个命令,但是PlacementTarget
的ContextMenu
是指向单个项目.
我的Xaml看起来像这样:
<ItemsControl ItemsSource="{Binding Markers"}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image>
<Image.ContextMenu>
<ContextMenu>
<MenuItem Header="Edit" Command="{Binding EditCommand}" />
</ContextMenu>
</Image.ContextMenu>
</Image>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
我如何设置DataContext
的ContextMenu
,以该项目的相应的父视图模型?
datacontext ×10
wpf ×4
linq-to-sql ×3
.net ×2
asp.net ×2
c# ×2
data-binding ×2
linq ×2
caching ×1
concurrency ×1
contextmenu ×1
iqueryable ×1
itemssource ×1
linqpad ×1
readonly ×1
xaml ×1