首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HQL转换为Linq- to -NHibernate时出现问题

将HQL转换为Linq- to -NHibernate时出现问题
EN

Stack Overflow用户
提问于 2010-12-05 10:30:24
回答 1查看 800关注 0票数 0

如何转换此NHibernate HQL(works) ...

代码语言:javascript
复制
static IList<Phone> PhoneList()
{
    ISession session = OpenSession();

    IQuery query = session.CreateQuery("from Phone p where p.Kontact.ContactName = :_contact_name");
    query.SetParameter("_contact_name", "lennon");

    IList<Phone> contacts = query.List<Phone>();

    return contacts;        
}

...to Linq-to-NHibernate(不工作):

代码语言:javascript
复制
static IList<Phone> PhoneListUsingLinq()
{
    string contactName = "lennon";

    ISession session = OpenSession();

    var contacts = from Phone p in session.Query<Phone>()
        where p.Kontact.ContactName == contactName
        select p;

    return contacts.ToList();

}

对象:

代码语言:javascript
复制
public class Contact
{
    public virtual int ContactId { get; set; }
    public virtual string ContactName { get; set; }

    public virtual IList<Phone> Phones { get; set; }


}

public class Phone
{  
    public virtual Contact Kontact { get; set; }
    public virtual int PhoneId { set; get; }
    public virtual string PhoneNumber { get; set; }
}

下面是这两个对象的.hbm.xml映射文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="TestTwoTable" namespace="TestTwoTable">

  <class name="Contact" table="contact">
    <id name="ContactId" column="contact_id">
      <generator class="sequence">
        <param name="sequence">contact_contact_id_seq</param>
      </generator>
    </id>

    <property name="ContactName" column="contact_name"/>

    <bag name="Phones" inverse="true">
     <key column="contact_id"/>
     <one-to-many class="Phone"/>
    </bag>

  </class>

  <class name="Phone" table="phone">
    <id name="PhoneId" column="phone_id">
      <generator class="sequence">
        <param name="sequence">phone_phone_id_seq</param>
      </generator>
    </id>

    <property name="PhoneNumber" column="phone_number"/>

    <many-to-one name="Kontact" column="contact_id" class="Contact" not-null="true"/>

  </class>

</hibernate-mapping>

这有什么问题吗?

代码语言:javascript
复制
var contacts = from Phone p in session.Query<Phone>()
               where p.Kontact.ContactName == contactName
               select p;

注意:我使用的是NHibernate 3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-05 10:59:58

将"from Phone p“改为"from p”

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4357041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档