我尝试使用NHibernate进行操作:
this.Session.CreateQuery(@"insert into ContactGroupContact (Id, MailAddress, Company, Person, Branch, ContactGroup, User, FaxNumber)
select newid(), MailAddress, Company, Person, Branch,
:destContactGroupId, User, FaxNumber
from ContactGroupContact cgc
where cgc.ContactGroup.Id = :contactGroupId")
.SetEntity("destContactGroupId", tempContactGroup)
.SetGuid("contactGroupId", contactGroupId)
.ExecuteUpdate();
Id
的{{1}}列的类型为ContactGroupContact
。
当我执行此操作时,我收到GUID
,其中包含以下消息:
节点没有数据类型:MethodNode((newid exprList)[insert into ContactGroupContact(Id,MailAddress,Company,Person,Branch, ContactGroup,User,FaxNumber) 选择newid(),MailAddress,Company,Person,Branch,:destContactGroupId,User,FaxNumber 来自ContactGroupContact cgc 其中cgc.ContactGroup.Id =:contactGroupId]
有人可以帮助我吗,出了什么问题? - 谢谢。
答案 0 :(得分:1)
尝试创建派生Dialect
并将newid
注册为函数。
答案 1 :(得分:1)
这是Diego的建议的一个例子。我承认我是新手,但假设这是处理它的适当方式(它有效)
public class DerivedDialectWithNewId : MsSql2005Dialect
{
public DerivedDialectWithNewId()
{
RegisterFunction("newid", new NoArgSQLFunction("newid", NHibernateUtil.Guid, true));
}
}
以下是如何将它与Fluent NHibernate一起使用
private static FluentConfiguration GetConfiguration()
{
return Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2005.ConnectionString(
c => c.FromConnectionStringWithKey("CustomConnectionString"))
.Dialect<DerivedDialectWithNewId>()));
}