我应该如何配置映射以避免NHibernate在插入子实体后立即更新我的子实体的外键?
例如,父类的映射如下:
class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
Id(x => x.Id)
.GeneratedBy.Increment();
Map(x => x.Name);
HasMany(x => x.ChildNodes)
.KeyColumns.Add("Parent_id")
.Cascade.All();
}
}
Run Code Online (Sandbox Code Playgroud)
让我们Parent有一堆Child对象:
Parent p = new Parent("test");
p.ChildNodes.AddRange(GetSomeDummyNodes());
Run Code Online (Sandbox Code Playgroud)
保存父实体时,生成的SQL如下所示:
INSERT INTO [Parent] (Name, Id) VALUES (@p0, @p1); @p0 = 'test', @p1 = 0
INSERT INTO [Child] (Name, Id) VALUES (@p0); @p0 = 'child1', @p1 = 0
INSERT INTO [Child] (Name, Id) VALUES (@p0); @p0 = 'child2', @p1 = 1
INSERT INTO [Child] (Name, …Run Code Online (Sandbox Code Playgroud) 我是菜鸟.我需要将UITextView插入UITableViewCell并进行动态调整大小,并且我会在单元格中输入.请帮我解决这个问题.
我正在使用coldfusion将struct(键值对)的内容插入到数据库表中.这是我的代码:
<cfloop collection="#results#" item="ID" >
<cfquery name="insertStuff" datasource="myDataSource">
INSERT INTO web..Stuff (ID, Name)
VALUES (#ID#, #results[ID]#)
</cfquery>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
这看起来很简单......但我收到以下错误:
Incorrect syntax near 'VA'.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
嗨,我想在ASP.net中创建一个插入表单.但我得到这个例外,我无法用谷歌找到这个.
我究竟做错了什么 ?
这是我的代码:
<div id = "survey_div">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:surveyConnectionString1 %>"
DeleteCommand="DELETE FROM survey"
InsertCommand="INSERT INTO survey(age, country, city) VALUES (,,)"
SelectCommand="SELECT FROM survey" UpdateCommand="UPDATE survey SET">
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" CellPadding="4"
DataSourceID="SqlDataSource1" EnableModelValidation="True" ForeColor="#333333"
GridLines="None" Height="50px" Width="125px">
<AlternatingRowStyle BackColor="White" />
<CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />
<EditRowStyle BackColor="#2461BF" />
<FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" />
<Fields>
<asp:CommandField ShowInsertButton="True" />
</Fields>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
</asp:DetailsView>
</div>
Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server 2008.
我有一个INSERT声明,从一个表到另一个表插入大量的记录.在插入时,我得到了主键异常.
我的问题是......如果在插入第5行时发生异常......是否会回滚所有四个记录(先前插入的记录)?
提前致谢.
我正在研究一个在我自己的类中使用multimaps的项目,我遇到了一个段错误.以下是我的代码中与该问题相关的部分.我真的很感激一些帮助.谢谢.
这是database.h
#include <iostream>
#include <map>
using namespace std;
class database{
public:
database(); // start up the database
int update(string,int); // update it
bool is_word(string); //advises if the word is a word
double prox_mean(string); // finds the average prox
private:
multimap<string,int> *data; // must be pointer
protected:
};
Run Code Online (Sandbox Code Playgroud)
这是database.cpp
#include <iostream>
#include <string>
#include <map>
#include <utility>
#include "database.h"
using namespace std;
// start with the constructor
database::database()
{
data = new multimap<string,int>; // allocates new space for the database …Run Code Online (Sandbox Code Playgroud) 我正在从perl插入一个mysql数据库.我在第一次插入后得到重复错误.这是我用于插入的代码.我正在从json的回复中提取一个id.我输出了我在代码下面收到的内容
foreach my $listing(@{$json_text->{listings}})
{
my $id = $listing->{id};
print "\nid = $id \n";
# DO THE INSERT
my $query_insert = "INSERT INTO calendar (id) VALUES ($id)";
print "query insert = $query_insert \n";
my $query = $db->do($query_insert);
print "query = $query \n";
} #end foreach
Run Code Online (Sandbox Code Playgroud)
这是我收到的输出.(返回没有复制到右边.所以下面看起来,但正确的数据在那里).这就像133 my $ query = $ db-> do($ query_insert);
id = 2576246314 query insert = INSERT INTO calendar(id)VALUES(2576246314)query = 1
id = 2576246678 query insert = INSERT INTO calendar(id)VALUES(2576246678)DBD :: mysql :: db do failed:在./calendar_run.pl第133行为'PRIMARY'键复制条目'2147483647'.query …
SqlConnection conn = new SqlConnection("Server=ILLUMINATI;" +
"Database=DB;Integrated Security= true");
SqlCommand comm = new SqlCommand(
"Insert into FileUpload ('FilePath','TypeId','UploadedBy','UploadedDate')
values (" + savePath + "," + typeid + "," + NAME + "," + DateTime.Now+ ")", conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误说:
{"'C'附近的语法不正确."}
请有人告诉我错误.
它告诉我在这里有一个语法错误,但是每个查询都是单独工作的,只有在我尝试将它们组合起来时它才能正常工作.
INSERT INTO users( username, password , callsign, macroregion, privelages )
VALUES ( (SELECT username, password, callsign, macroregion, privelages
FROM users
WHERE username = 'someuser'
LIMIT 1) )
Run Code Online (Sandbox Code Playgroud)
我完全被这里难过,有什么建议吗?
我正在尝试插入一个表,其中ID是序列中的下一个,其他一些值是从表中提取的.我知道这不起作用:
INSERT INTO ORDERS(order_id, foo1, foo2, foo3
VALUES(SEQUENCE_ORDERS.nextval,(SELECT foo1, foo2, foo3
FROM bar
WHERE X = Y))
Run Code Online (Sandbox Code Playgroud)
我刚试过,而且我得到了"没有足够的价值"错误.
我想知道正确的语法是什么让它工作.我在Oracle DB中使用PLSQL(我正在编写的程序的一部分).
我知道选择不应该在VALUES()内,但我如何添加序列?我能想到的唯一选择是插入的触发器,但我宁愿不必这样做.
编辑:谢谢大家,正如我想的那样,每个人都发布了.不知道在选择中有序列是可以的.
insert ×10
asp.net ×2
c# ×2
mysql ×2
sql ×2
sql-server ×2
c++ ×1
cfquery ×1
coldfusion ×1
dbi ×1
exception ×1
has-many ×1
multimap ×1
nhibernate ×1
objective-c ×1
oracle ×1
perl ×1
plsql ×1
resize ×1
rollback ×1
sequence ×1
stl ×1
uitableview ×1
uitextview ×1