我正在写一个博客引擎作为学习练习.我知道那里有很多博客引擎,但请耐心等待......
我有一个BlogPost实体,它有一个属性标签,它是与之关联的标签的IList.BlogPost.SetTags(string)方法拆分字符串,使用指定的标记名称创建新的Tag对象,并将它们添加到列表中.BlogPost.AddTag(字符串tagName)也是如此.
我想要发生的是,当我调用BlogPost.AddTag("foo"),其中一个名为"foo"的标签实体已经存在并且在数据库中持久存在时,nHibernate只是意识到这一点,并用现有标签连接帖子.
在BlogRepository.Save()方法中,我检查标签列表中的每个标签是否已经存在.如果没有,我通过调用TagRepository.Save(tag)保存它;
问题是,在下面的示例代码中,我收到一个错误"NHibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已经与会话关联:标记1,实体:CMS.Core.Model.Tag"当我尝试使用现有标记持久保存BlogPost对象时.当我坚持只使用新标签的BlogPost对象时,它们就被创建了,一切都很好.
注意我还使用TagName作为bp_Tags表的数据库中的主键.当表只存储唯一的Tag名称时,使用整数或GUID PK似乎是多余的.
我的nHibernate配置如下:
<class name="CMS.Core.Model.Tag,CMS.Core" table="bp_Tags">
<id column="TagName" name="TagName" type="String" unsaved-value="">
<generator class="assigned" />
</id>
</class>
<class name="CMS.Core.Model.BlogPost,CMS.Core" table="bp_Content">
<id name="Id" column="Id" type="Int32" unsaved-value="0">
<generator class="native"></generator>
</id>
<property name="SubmittedBy" column="SubmittedBy" type="string" length="256" not-null="true" />
<property name="SubmittedDate" column="SubmittedDate" type="datetime" not-null="true" />
<property name="PublishDate" column="PublishDate" type="datetime" not-null="true" />
...
<bag name="_tagsList" table="bp_Tags_Mappings" lazy="false" cascade="all">
<key column="Target_Id" />
<many-to-many class="CMS.Core.Model.Tag,CMS.Core" column="TagName" lazy="false" />
</bag>
Run Code Online (Sandbox Code Playgroud)
NHibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联:标记1,实体:Bariliant.CMS.Core.Model.Tag
BlogPost post, post2;
using (UnitOfWork.Start())
{
post = BlogPostFactory.CreateBlogPost("test post", "test body");
post.Publish(); …
Run Code Online (Sandbox Code Playgroud) 我有一个类似下面的工人类:
class Worker{
public:
int Do(){
int ret = 100;
// do stuff
return ret;
}
}
Run Code Online (Sandbox Code Playgroud)
它的目的是使用boost :: thread和boost :: bind来执行,如:
Worker worker;
boost::function<int()> th_func = boost::bind(&Worker::Do, &worker);
boost::thread th(th_func);
th.join();
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何获得Worker :: Do的返回值?
提前致谢.
好的,我正在试图找出哪种方式可以更快地读取我正在使用的文本文件.该文件的内容如下所示
1982 3923 3542 4343 2344 3453 2 334 423423 32432 23423
它们基本上只是一个任意数量的int数,我需要逐行读取.使用getline或insert(>>)运算符会更好吗?我个人认为通过使用插入运算符实现起来会容易得多,但我不知道如何编写程序,以便它读取同一行中的所有int数字,直到它到达结尾.我想把它设置如下:
ifstream input;
input.open("someFile.txt");
if (input) {
char* ch;
while (ch != '\n\)
getline(input, buffer, ' ')
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我必须转换为int,然后将每个int放在一个数组中.我期望的最终目标是生成一个二维数组,其中int的每一行都是int的数组.有关最佳实施的任何建议表示赞赏!
如果我有一堆像这样的链接:
<a href="foo.com">blah</a> and this <a href="example.com">one</a> and here is another <a href="foo.com"></a>.
Run Code Online (Sandbox Code Playgroud)
如何将所有链接添加到链接到foo.com的链接?
嗨,我已经创建了一个aplication myprogram.app文件.现在我想为该应用程序创建拖放DMG文件.Skype和其他软件做同样的事情.
如何创建我的应用程序拖放DMG文件.
谢谢Sunil Kumar Sahoo
Rails有很好的方法用factoryGirl/Machinist + Shoulda生成测试数据.来自factorygirl网站"Factory Girl提供了一个框架和DSL,用于定义和使用工厂为ruby测试套件创建数据记录.目标是减少错误,更明确,并且比Rails的工具更容易使用".在.Net/c#中是否存在类似FactoryGirl/machinist的测试数据?
从已经开发的应用程序开始,我已经执行了iPhone开发指南 - 单元测试应用程序中的说明
我可以成功地在设备上运行的应用程序样式测试中包含和使用我的应用程序类,并将其结果输出到控制台.
如果我添加以下代码行:
STAssertTrue([viewController isKindOfClass:[LoginViewController class]], @"Top view controller is not LoginViewController");
Run Code Online (Sandbox Code Playgroud)
生成以下生成错误:
Undefined symbols:
"_OBJC_CLASS_$_LoginViewController", referenced from:
__objc_classrefs__DATA@0 in LoginViewTest.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我可以为项目和测试目标提供更多配置信息,但是设置工作文件没有[LoginViewController class]
测试源中的行.
没有那一行,我可以引用该类,使用它的属性并成功发送消息.
在尝试以这种方式使用App类时是否需要链接构建设置或捆绑加载选项?或者我应该找到另一种类型的测试来确认对象的类是预期的类?
c++ ×3
java ×2
unit-testing ×2
applet ×1
boost ×1
boost-bind ×1
boost-thread ×1
c# ×1
file-io ×1
go ×1
installer ×1
iphone ×1
javadoc ×1
javascript ×1
jquery ×1
linker ×1
macos ×1
maven-2 ×1
nhibernate ×1
uml ×1
wrapper ×1
xcode ×1