我正在使用Entity Framework从表中删除多个项目.没有外键/父对象,因此我无法使用OnDeleteCascade处理此问题.
现在我这样做:
var widgets = context.Widgets
.Where(w => w.WidgetId == widgetId);
foreach (Widget widget in widgets)
{
context.Widgets.DeleteObject(widget);
}
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
它有效但是foreach让我烦恼.我正在使用EF4,但我不想执行SQL.我只是想确保我没有遗漏任何东西 - 这一切都很好,对吧?我可以用扩展方法或帮助器来抽象它,但在某个地方我们仍然会做一个foreach,对吧?
我正在开发一款僵尸在沼泽中奔跑的游戏.我希望AI拥有"追逐这个目标"或"逃跑"等功能.一个主要障碍是寻路.在XNA中是否有一个好的寻路/ AI引擎,或者我应该自己动手?
有没有人有这方面的经验:http://www.codeplex.com/simpleAI?
我以为这是一个简单的select子句,但是以下内容使我感到悲伤!我正在使用SQL Server 2008。
基本上,我想比较两个整数值并在select子句中返回布尔结果。这是一个简单的示例:
DECLARE @A INT
DECLARE @B INT
SET @A = 1
SET @B = 2
SELECT @A = @B
Run Code Online (Sandbox Code Playgroud)
当前唯一的输出是“命令已成功完成”。我有理由相信它将@A分配给@B。
我以为这很简单,但未能实现。
任何帮助将是巨大的!谢谢
我正在编写一个高负载的守护进程,它应该在FreeBSD 8.0和Linux上运行.守护程序的主要目的是传递其标识符请求的文件.通过对db的请求将标识符转换为本地文件名/文件大小.然后我使用顺序mmap()调用来传递文件块send().
但是有时文件系统中的db和filesize中的文件大小不匹配(realsize <db中的大小).在这种情况下,我发送了所有实际数据块,当下一个数据块被映射时 - mmap没有返回任何错误,只是通常的地址(我也检查过errno变量,它在mmap之后等于零).当守护进程尝试发送此块时,它会获得Segmentation Fault.(在FreeBSD 8.0 amd64上保证发布此行为)
我打开前使用安全检查以确保stat()通话时的尺寸.然而现实生活告诉我,在罕见的情况下仍然可以提升段错误.
所以,我的问题是有一种方法可以在解除引用之前检查指针是否可访问?当我在gdb中打开核心时,gdb说给定地址超出范围.可能有人可以提出另一个解决方案.
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#define FILENAME "./datafile"
int main()
{
unsigned long i, j;
srand(time(NULL));
unsigned long pagesize = sysconf(_SC_PAGESIZE);
unsigned long basesize = 4 * pagesize;
unsigned long cropsize = 2 * pagesize;
// create 4*pagesize sized file
int f = creat(FILENAME, 0644);
for (i = 0; i < basesize; …Run Code Online (Sandbox Code Playgroud) 我想为每个模型使用唯一的哈希而不是ID.
我实现了以下功能,可以轻松地全面使用它.
import random,hashlib
from base64 import urlsafe_b64encode
def set_unique_random_value(model_object,field_name='hash_uuid',length=5,use_sha=True,urlencode=False):
while 1:
uuid_number = str(random.random())[2:]
uuid = hashlib.sha256(uuid_number).hexdigest() if use_sha else uuid_number
uuid = uuid[:length]
if urlencode:
uuid = urlsafe_b64encode(uuid)[:-1]
hash_id_dict = {field_name:uuid}
try:
model_object.__class__.objects.get(**hash_id_dict)
except model_object.__class__.DoesNotExist:
setattr(model_object,field_name,uuid)
return
Run Code Online (Sandbox Code Playgroud)
我正在寻求反馈,我怎么能这样做?我怎样才能改进它?有什么好坏和丑陋的?
我在Glassfish v3应用服务器上使用EJB和JPA.我有一个实体类,我强迫其中一个字段与@Column注释是唯一的.
@Entity
public class MyEntity implements Serializable {
private String uniqueName;
public MyEntity() {
}
@Column(unique = true, nullable = false)
public String getUniqueName() {
return uniqueName;
}
public void setUniqueName(String uniqueName) {
this.uniqueName = uniqueName;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试将此字段设置为非唯一值的对象持久化时,当EJB容器管理的事务提交时,我得到一个异常(如预期的那样).
我有两个问题需要解决:
1)我得到的例外是无用的"javax.ejb.EJBException:Transaction aborted".如果我递归调用getCause()足够多次,我最终会得到更有用的"java.sql.SQLIntegrityConstraintViolationException",但是这个异常是EclipseLink实现的一部分,我真的不习惯依赖它的存在.
有没有更好的方法来获取JPA的详细错误信息?
2)EJB容器坚持记录此错误,即使我抓住它并处理它.
有没有更好的方法来处理这个错误,这将阻止Glassfish使用无用的异常信息混乱我的日志?
谢谢.
我已经将Windows服务构建为"任何CPU".但是,当我在64位机器上运行时,它以32位运行.我该如何解决?我使用的是.NET和C#,我的操作系统是Windows 2008 R2.
如果我在x64中构建它,它会以64位模式正确加载.但是,"Any Cpu" - 这就是我想要的 - 加载32位,即使它运行的机器完全支持64位.
编辑以根据反馈添加更多信息
我们确实有第三方工具以及引用c ++托管程序集.这些可能是也可能不是为任何CPU构建的.事实上我知道c ++托管程序集只是为x86构建的.然而,奇怪的是,如果我专门指定x64,该进程将启动并在x64中工作.如果框架试图加载c ++托管程序集,它将失败.我不介意这一点,因为在代码中,如果我们以64位模式运行,我们不会加载32位托管++程序集.可能是因为构建数据,因为这里有32位程序集,它应该将启动过程(在本例中是一个Windows服务程序集)标记为x86?
我正在使用 PHP 的魔法__set和__get方法来访问类中的私有数组。该类的使用可以包括“设置”新属性以及使用现有属性。我想确保创建或请求的属性名称(即$myObj->FakeProperty)根据以下规则有效:
我当前的正则表达式并不能解决问题;根据我的测试值,_12总是会落空。
测试领域:
albert12
12Albert
_12
_Albert12
_12Albert
_____a_1
Run Code Online (Sandbox Code Playgroud)
正则表达式:
^(?=_*[A-z]+)[A-z0-9_]+$
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用html模拟标签栏
我想根据文本长度(即没有固定宽度)设置每个标签的宽度,并在超出屏幕宽度时自动换行
我几乎实现了它
<html>
<head>
<style type="text/css">
#myTabs .tab {
float: left;
}
#myTabs .tab_middle {
margin: 0;
padding: 0;
border: none;
background-image:url('images/tabs/tab_middle.png');
}
#myTabs .tab_left {
margin: 0;
padding: 0;
border: none;
background-image:url('images/tabs/tab_left.png');
}
#myTabs .tab_right {
margin: 0;
padding: 0;
border: none;
background-image:url('images/tabs/tab_right.png');
}
</style>
</head>
<body>
<div id="myTabs">
<div class='tab'>
<span class='tab_left'> </span>
<span class='tab_middle'>very very looong</span>
<span class='tab_right'> </span>
</div>
<div class='tab'>
<span class='tab_left'> </span>
<span class='tab_middle'>another loooong tab</span>
<span class='tab_right'> </span>
</div>
<div style='clear:both'></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,在开启标签图像和结束标签图像之间有一个非常烦人的空间......
你可以看到我尝试过填充,间距和边框,没有运气...... …
在谈到GIT时,我是一个完整的Noob.过去几天我一直在迈出第一步.我在我的笔记本电脑上设置了一个repo,从一个SVN项目中拉下了Trunk(有一些分支问题,没有让它们工作),但一切似乎都没问题.
我现在希望能够从笔记本电脑拉到或推送到我的主桌面.原因是笔记本电脑在火车上很方便,因为我每天花2个小时旅行,可以完成一些好的工作.但我家里的主机非常适合开发.因此,当我回到家时,我希望能够从笔记本电脑推/拉到主计算机.我认为最简单的方法是让局域网中的代码文件夹共享,并执行:
git clone file://192.168.10.51/code
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎对我不起作用:
所以我打开一个git bash cmd并输入上面的命令,我在C:\ code(两台机器的共享文件夹)这是我得到的:
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
如何以最简单的方式在两台机器之间共享存储库.
将有其他位置将是官方存储点和其他开发人员和CI服务器等将从中拉出的位置,这样我就可以在两台计算机上处理相同的存储库.
根据塞巴斯蒂安的建议,我得到以下内容:
C:\code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
**编辑 - 答案**
感谢所有帮助.我尝试映射一个驱动器,这工作所以我想回去重试没有映射.最终结果是:
git clone file://\\\\192.168.0.51\code
Run Code Online (Sandbox Code Playgroud)
这很有效.
谢谢