这可能是一个微不足道的问题但是:由于ADO.NET实体框架会自动跟踪更改(在生成的实体中)并因此保留原始值,我如何回滚对实体对象所做的更改?
我有一个表单,允许用户在网格视图中编辑一组"客户"实体.
现在我有两个按钮"Accept"和"Revert":如果单击"Accept",我会调用Context.SaveChanges()并将更改的对象写回数据库.如果单击"恢复",我希望所有对象获取其原始属性值.那个代码是什么?
谢谢
我有std::vector一些类的元素ClassA.另外,我想创建一个索引,使用a std::map<key,ClassA*>将一些键值映射到指向向量中包含的元素的指针.
当在向量的末尾添加元素(未插入)时,是否保证这些指针保持有效(并指向同一对象).即,以下代码是否正确:
std::vector<ClassA> storage;
std::map<int, ClassA*> map;
for (int i=0; i<10000; ++i) {
storage.push_back(ClassA());
map.insert(std::make_pair(storage.back().getKey(), &(storage.back()));
}
// map contains only valid pointers to the 'correct' elements of storage
Run Code Online (Sandbox Code Playgroud)
情况怎么样,如果我用std::list而不是std::vector?
我正在写一个小文件转换实用程序.文件在放入目录时会自动转换.
我正在使用NLog进行日志记录.除了使用NLog.conf配置的中央日志文件(并接收生成的所有消息)之外,我还想为每个输入文件创建一个额外的日志文件,它具有相似的名称并包含在转换过程中写入的所有日志消息.
不幸的是,我似乎无法在运行时找到如何正确添加新文件目标和相应规则.我希望Logger在转换过程中所有对象都写入新的日志文件.
我试过类似的东西
var logfile = new NLog.Targets.FileTarget();
logfile.FileName = fileName + ".log";
logfile.KeepFileOpen = true;
logfile.Initialize();
var rule = new NLog.Config.LoggingRule("*", logfile);
NLog.LogManager.Configuration.LoggingRules.Add(rule);
NLog.LogManager.ReconfigExistingLoggers();
//
// Proceed with converting file
//
logfile.Flush();
NLog.LogManager.Configuration.LoggingRules.Remove(rule);
NLog.LogManager.ReconfigExistingLoggers();
Run Code Online (Sandbox Code Playgroud)
但是没有创建日志文件.
我错了什么?任何的想法?
我在Scala中寻找一种优雅的方式将给定的字符串拆分为固定大小的子串(序列中的最后一个字符串可能更短).
所以
split("Thequickbrownfoxjumps", 4)
Run Code Online (Sandbox Code Playgroud)
应该屈服
["Theq","uick","brow","nfox","jump","s"]
Run Code Online (Sandbox Code Playgroud)
当然,我可以简单地使用一个循环,但必须有一个更优雅(功能样式)的解决方案.
有没有办法直接选择表的所有"内部"表格单元格(<td>元素)(即除了第一行和最后一行和列中的所有单元格)使用jquery选择器表达式?
我想使用Visual Studio 2012开始使用ASP.NET MVC 5.我已经安装了" ASP.NET和Web Tools 2013 for Visual Studio 2012,但这只"给了我一个"空ASP.NET MVC" 5项目"模板.
对于MVC4 Web项目,我可以选择不同类型的Web应用程序(如"标准","Internet","Intranet"等).我已经看过Visual Studio 2013的类似选项的截图.
是否有任何项目模板(对于VS2012)允许我对MVC5应用程序执行相同的操作?
我试图改变Background属性我ListBoxItem使用触发器s中ItemContainerStyle的我ListBox,如下所示:
<ListBox Height="100" HorizontalAlignment="Left" Margin="107,59,0,0" Name="listBox1" VerticalAlignment="Top" Width="239">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Lightblue"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="Red"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.Items>
<ListBoxItem Content="First Item"/>
<ListBoxItem Content="SecondItem"/>
<ListBoxItem Content="Third Item"/>
</ListBox.Items>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
我希望未选择的项目具有浅蓝色背景,悬停项目(即当鼠标光标在它们上方时)为黄色并且所选项目为红色.
对于未选择和悬停的项目,这是按预期工作的,但所选项目仍然具有其标准背景颜色(即蓝色,如果列表框具有焦点,否则为浅灰色).
有什么我想念的吗?这种行为是否记录在某处?
谢谢你的提示!
编辑
我知道覆盖默认系统颜色的解决方案(如更改选定和未聚焦的列表框样式中所述,不会显示为灰色,非常感谢每个人都将此作为答案发布).然而,这不是我想要做的.我更感兴趣的是为什么我的解决方案不起作用.
我怀疑标准ControlTemplate的ListItem定义它自己的触发器,这似乎采取precendence在由风格定义的触发器(也许有人可以证实这一点,并指出我的一些资源,其中这种行为被定义).
我的解决方案是同时ControlTemplate为我定义一个ListItem:
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border …Run Code Online (Sandbox Code Playgroud) 我使用以下C++语法在Windows平台上输出浮点值:
printf("%.2f", 1.5);
Run Code Online (Sandbox Code Playgroud)
如果我在英文用户帐户上运行它,它的效果很好.我的假设是,如果我运行它,比如法国用户帐户,输出将是1,50而不是1.50.
为什么我看不到它以及如何产生我想要的结果?
几乎每次我使用Graphics.DrawRectangle或Graphics.FillRectangle(int版本)我似乎都会错过我想要绘制的矩形的右边和右边的像素.
什么是哪些像素被填充的确切定义
Graphics.FillRectangle(brush,x,y,width,height)
Run Code Online (Sandbox Code Playgroud)
和
Graphics.DrawRectangle(pen,x,y,width,height) // pen is one pixel width, i.e. width=0f
Run Code Online (Sandbox Code Playgroud)
对它有合理的解释吗?(所以我终于可以记住行为:) ...)
编辑:
使用Oleg Zhuk奇妙的Try GDI +应用程序,我能够找到FillRectangle和之间的奇怪区别DrawRectangle:
FillRectangle(brush,0,0,1,1) 在(0,0)绘制一个点,这在某种程度上是可以理解的(它毕竟是一个宽度和高度的矩形).
DrawRectangle(pen,0,0,1,1) 另一方面,绘制一个2×2像素的小矩形.
对于其他宽度/高度组合显示相同的行为,DrawRectangle总是向左和向下延伸一个像素(这有点烦人,例如当使用ClientRectangle属性在控件周围绘制框架时)
我的第一个问题解决了(他们如何表现......)仍然存在第二个问题:为什么他们这样做?
我正在使用CodeIgniter设计一个Web应用程序(但我认为这个问题通常适用于Web应用程序中的MVC模式).
当我为某个数据库实体设计模型类时(例如,BlogEntry为了说明),我基本上有两个选择:
"经典OOP"方法是让类代表实体,即类的一个实例是 BlogEntry.在CodeIgniter中,这将导致类似的代码
class Blogentry extends CI_Model {
function load($id) {
// Access database
$this->id = $dbresult.id;
$this->title = $dbresult.title;
$this->author = $dbresult.author;
}
}
Run Code Online (Sandbox Code Playgroud)
要访问某些博客条目,我会进行$this->load->model('blogentry');调用$this->blogentry->load($id),然后使用模型类实例.
我经常在野外看到的另一种方法是让模型在某些数据结构中返回实体.在代码中:
class Blogentry extends CI_Model {
function get_entry($id) {
// Access database, yielding $dbresult
return $dbresult;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我会写
$this->load->model('blogentry');
$the_entry = $this->blogentry->get_entry($id);
Run Code Online (Sandbox Code Playgroud)
在控制器中工作$the_entry.在第二种情况下,类更像是工厂或构建器类.
这两种方法中的任何一种都被认为是在MVC中做M的"正确方法"吗?我想,我经常看到第二种方法,但我没有看过那么多MVC-Webapps.对于为什么第一种或第二种方法可能更合适的任何想法?