我希望能够判断实体框架上下文中是否存在任何未保存的数据.我已经弄清楚如何使用ObjectStateManager来检查现有实体的状态,但我有两个问题.
在我的msdn搜索中,我一直无法找到答案,所以我希望有人能在这里找到答案.
提前致谢.
有没有一种简单的方法,在提交文件时,自动将信息插入代码文件本身(如作者,提交评论,提交日期等)?我希望将此信息附加到每个已提交文件顶部的块中.基本上,整个修订历史记录应记录在每个代码文件中......
我看到有一种方法可以使用subversion属性来实现类似的东西,但是我没有看到如何将实际的提交注释添加到文件中,而且我也看不到如何保持具有整个修订版的运行日志历史而不是最后一次提交信息.
我个人认为这不是一个好主意,因为代码文件应该包含代码,但不幸的是,这是我当前项目的要求.
通过我在这里和其他论坛提出的各种问题,我得出的结论是,在实体框架中生成的实体上下文对象时,我不知道我在做什么.
作为背景,我有很多使用LLBLGen Pro的经验,实体框架对我来说大约有三周的时间.
假设我有一个名为"myContext"的上下文.在我的模型中有一个名为Employee的表/实体,所以我现在有一个myContext.Employees.我假设这意味着此属性表示我的上下文中的Employee实体集.但是,我假设错了,因为我可以在上下文中添加一个新实体:
myContext.Employees.AddObject(new Employee());
Run Code Online (Sandbox Code Playgroud)
而这个新的Employee实体在myContext.Employees 中无处可见.从我收集的内容来看,找到这个新添加的实体的唯一方法是在myContext.ObjectStateManager中隐藏它.这听起来像myContext.Employees集实际上不是上下文中的Employee实体集,而是数据库中存在的Employee实体的某种表示.
为了进一步加剧这种混乱,让我们说我正在看一个单一的Employee实体.有一个Project实体与Employee有一个M:1的关系(一个员工可以有多个项目).如果我想向特定员工添加新项目,我只需:
myEmployee.Projects.Add(new Project());
Run Code Online (Sandbox Code Playgroud)
太棒了,这实际上就像我期望的那样将项目添加到集合中.但是,面对上下文中ObjectSet属性的工作原理,这种情况仍然存在.如果我将新项目添加到上下文中:
myContext.Projects.AddObject(new Project());
Run Code Online (Sandbox Code Playgroud)
这不会改变项目集.
如果有人向我解释这一点,我将非常感激.另外,我真的想要上下文中所有Employees(或Projects)的集合,并且我希望它可用作上下文的属性.这可能与EF有关吗?
我正在使用Doxygen为我正在开发的C#项目生成一些API文档.我在这个项目中有相当多的"内部"功能,并且不希望Doxygen在它生成的生成的html中生成这些签名.
我已尝试启用HIDE_FRIEND_COMPOUNDS,但这仍会导致我的内部类在生成的文档中公开.
有谁知道如何做到这一点?
这似乎是一个非常基本的事情,但我是Powershell的新手,无法弄清楚这一点或在网上找到一个例子......
我正在尝试过滤字符串列表.这个字符串列表是"svn list"命令(存储库文件的subversion列表)的结果,如:
svn list -R PATHTOREPOSITORY
Run Code Online (Sandbox Code Playgroud)
我试过了
svn list -R PATHTOREPOSITORY | where {$_ -like "stringtomatch"}
Run Code Online (Sandbox Code Playgroud)
这不起作用......有谁知道这个?
有谁知道IronPython 2.6是否计划支持pdb.set_trace()以启用ironpython模块中的断点?如果没有,是否有人建议在没有pdb的情况下完成此操作?
我想做一些我认为非常简单的事情.我想将生成的Entity Framework EntityCollection绑定到WPF DataGrid.我也希望这个网格可以排序.
我尝试过各种各样的事情,包括使用CollectionViewSource.然而,似乎没有任何作用.在EntityCollection周围使用普通的CollectionViewSource给了我:
'System.Windows.Data.BindingListCollectionView' view does not support sorting.
Run Code Online (Sandbox Code Playgroud)
好吧......奇怪.我原以为这会起作用.接下来在CollectionViewSource上,我尝试设置:
CollectionViewType="ListCollectionView"
Run Code Online (Sandbox Code Playgroud)
很好,排序现在有效.但是等等,我现在无法使用网格添加或删除实体,可能是因为ListCollectionView不支持实体框架上下文.
所以,我想我需要捕获来自datagrid的事件,以便从我的上下文中手动添加或删除实体.现在我找不到要捕获的事件来检测添加......!
为什么这么难?这应该是微软应该设计的标准"演示"案例.
有任何想法吗?
我玩过一些不同的Model-View-ViewModel实现,并且一直遇到一种情况,我不确定正确的方法.我知道MVVM的目标之一是将View与应用程序逻辑分离,以便在没有View的情况下测试逻辑.将逻辑放在ViewModel中,该ViewModel不依赖于View解决了这个问题.大.如果模型可以以可以模拟的方式与ViewModel分离,那就更好了.
所以我的问题是,ViewModel应该将模型与View分离吗?换句话说,通过ViewModel将EntityFramework实体暴露给View是否"可以"?例如,假设视图中有一个组合框,用户可以选择状态作为地址.在AddressViewModel中,State应该作为真实的实体类型属性公开,还是应该作为StateViewModel公开?如果它应该是StateviewModel类型的属性,我不明白如何在AddressViewModel.State setter中管理底层模型(因为在属性中设置的是StateViewModel而不是State实体).
在我看来,这可能是两种方式,但似乎更一致,永远不会直接将模型暴露给视图.思考?
是否可以创建一个过滤器,例如,如果一个或另一个值匹配,则为中性的PropertyFilter(并传递给链中的下一个过滤器)?就像是:
<filter type="log4net.Filter.PropertyFilter">
<Key value="myProperty" />
<StringsToMatch Operator="OR">
<Match>value1</Match>
<Match>value2</Match>
</StringsToMatch>
</filter>
Run Code Online (Sandbox Code Playgroud)
我真的不想编写自己的过滤器,而是希望使用普通的Log4Net过滤器来实现这一点.这可能吗?
为什么:
DateTime.Now.ToString("M")
Run Code Online (Sandbox Code Playgroud)
不退还月份号码?相反,它返回完整的月份名称及其上的日期.
显然,这是因为"M"也是MonthDayPattern的标准代码.我不想要这个......我想用"M"来获取月号.有没有办法把它关掉?
是否可以将TortoiseMerge(TortoiseSVN附带)设置为使用“svn merge”命令行遇到合并冲突时弹出的外部合并工具?我尝试将环境变量“SVN_MERGE”设置为指向TortoiseMerge.exe,但这似乎还不够。当我选择“l”(启动外部工具)时,TortoiseMerge 就会弹出,询问我要合并哪些文件。我希望这些信息自动推送到工具中。
有任何想法吗?
我是数据仓库的新手,我希望这是一个关于构建星型模式的简单问题:
如果我有一个事实表,其中事实记录自然地与单个维度具有一对多关系,那么如何建模星型模式来支持这一点?例如:
情况是我希望单个销售点条目与多个不同的促销相关联.这些促销活动不能是他们自己的维度,因为有很多促销活动.
我该怎么做呢?
c# ×2
svn ×2
wpf ×2
.net ×1
datetime ×1
doxygen ×1
ironpython ×1
log4net ×1
logging ×1
mvvm ×1
olap ×1
olap-cube ×1
pdb ×1
powershell ×1
silverlight ×1
star-schema ×1
tortoisesvn ×1
vb.net ×1