1

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();

の列IdContactGroupContactタイプGUIDです。

これを実行するNHibernate.QueryExceptionと、次のメッセージが表示されます。

ノードのデータ型がありません:MethodNode((newid exprList)[Insert into ContactGroupContact(Id、MailAddress、Company、Person、Branch、ContactGroup、User、FaxNumber)select newid()、MailAddress、Company、Person、Branch、:destContactGroupId、User 、ContactGroupContact cgcからのFaxNumberここで、cgc.ContactGroup.Id =:contactGroupId]

誰かが私を助けることができます、何が問題になっていますか?- ありがとう。

4

2 に答える 2

1

派生関数を作成して関数としてDialect登録newidしてみてください。

于 2012-07-17T20:01:48.313 に答える
1

これがディエゴの提案の例です。私はこれに不慣れであることを認めますが、これがそれを処理するための適切な方法であると仮定します(それは機能します)

public class DerivedDialectWithNewId : MsSql2005Dialect
{
    public DerivedDialectWithNewId()
    {
        RegisterFunction("newid", new NoArgSQLFunction("newid", NHibernateUtil.Guid, true));        
    }
}

FluentNHibernateでの使用方法は次のとおりです

private static FluentConfiguration GetConfiguration()
    {
        return Fluently.Configure()
            .Database(
                MsSqlConfiguration.MsSql2005.ConnectionString(
                    c => c.FromConnectionStringWithKey("CustomConnectionString"))
                    .Dialect<DerivedDialectWithNewId>()));
    }
于 2012-11-19T23:40:52.253 に答える