使用NHibernate映射数据库外键?

使用MySql数据库,使用NHibernate做映射,前端unity通过本地服务器逻辑功能使用NHibernate对数据库增删改查,之前数据库表之间没有外键,做了简单的增删改查,成功了。卡在了加了外键这里,日志文档提示:表tuser中的关联引用了一个未映射的类:MyGameSever.Model.Tteam

这是MySQL中的数据库建表,tuser是用户表,tteam是队伍表,用户表引用了队伍表中tId作为外键。队伍表和用户表是多对一关系。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyGameSever.Model
{
    public class Tuser
    {
        public virtual int uId { get; set; }                //   用户账号
        public virtual string uname { get; set; }           //   用户昵称   
        public virtual string upwd { get; set; }             //   用户密码
        public virtual bool isLogin { get; set; }            //   用户已登录
        public virtual int uscore { get; set; }            //   用户个人积分
        public virtual Tteam tteam { get; set; }               //   所属队伍id

    }
}

//   Model文件夹下Tuser.cs的代码 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Iesi.Collections.Generic;

namespace MyGameSever.Model
{
    public  class Tteam
    {
        public virtual int tId { get; set; }           //  队伍编号
        public virtual string tname { get; set; }          //  队伍名称
        public virtual int tscore { get; set; }          //  队伍积分
        public virtual ISet<Tuser>  tusers { get; set; }        
    }
}
//  Model文件夹下Tteam.cs中代码
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="MyGameSever"
                   namespace="MyGameSever.Model">
                                                            <!--行3  模型所在程序集-->
                                                            <!--行4 命名空间-->

                                                            <!--类型是NHibernate类型  官网有对照表-->
  <class name="Tteam" table="tteam">                <!--类名与数据库表名-->                                             
    <id name="tId" column="tId" type="Int32">            <!--主键-->                                                         
    </id>
    
    <property name ="tname" column = "tname" type = "String" ></property >                                                                                                   
    <property name="tscore" column="tscore" type="Int32" > </property>
    
  <!--一对多关系:Team有一个或多个Users-->
    <!--inverse="false":父实体负责维护关联关系,inverse="true":子实体负责维护关联关系-->
    <!--set name="tusers" table ="tuser" generic="true" inverse="true"--> 
    <!--key column="tteam" foreign-key="tId"-->
    <!--one-to-many class="Tuser"-->

    <set name="tusers" inverse="true">
      <key column="tId"/>
      <one-to-many class="Tuser"/>
    </set>
    
  </class>

</hibernate-mapping>

<!-- Mappings中Tteam.hbm.xml中代码-->
<!-- 主要是一对多部分出错了,我在网上找了两个版本都试过了,一个版本被注释了,一个没有-->
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="MyGameSever"
                   namespace="MyGameSever.Model">
                                                           <!--行3  模型所在程序集-->
                                                           <!--行4 命名空间-->

                                                           <!--类型是NHibernate类型  官网有对照表-->
  <class name="Tuser" table="tuser">                     <!--类名与数据库表名-->                                                      
    <id name="uId" column="uId" type="Int32">              <!--主键-->                                                                                                                  
    </id>
    <property name ="uname" column = "uname" type = "String" ></property >     <!--表中其他-->
    <property name ="upwd" column = "upwd" type = "String" ></property >
    <property name ="isLogin" column = "isLogin" type = "Boolean" ></property >
    <property name="uscore" column="uscore" type="Int32" > </property>
    
    <!--多对一关系:user属于一个team-->
    <!--many-to-one name ="tteam" column ="tteam" not-null ="true"
                 class ="Tteam " foreign-key="tId" -->
    
    <many-to-one name="tteam" column="tId" class="Tteam" />
    
    
    
  </class>

</hibernate-mapping>


<!-- Mappings文件夹下Tuser.hbm.xml-->

主要是关于队伍表和用户表的外键这块映射出了错,我是个NHibernate初学者,根据视频教程学了没有外键的表的映射,增删改查,有外键的表是看着帖子来的,出了错,也不知道具体是哪里不对。希望可以得到解决。

这是log具体的报错信息

c# 为什么用Hibernate.....

c# 用Mysql.Entityframework不香吗

直接MySQL.Entityframework直接配齐了。

Java才用Hibernate框架

初学Java你去用Hibernate没有问题,学c#用EF阿。

不要找一些冷门的东西给自己添麻烦添堵......

建议不要做一对多配置,一对多配置性能很差,容易出问题,搞得不好,半个数据库都会关联出来。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y