NBear中如何建立一个单向组合关系的外键关联,而且对应实体的主键为String类型?

问题描述

NBear中设置单向的组合关系存在的疑问(使用NBear3.7.2的ORM框架,如需源码请联系hillfree#gmail.com)问题描述:涉及两个业务对象:User(用户)和UserType(用户类型);UserType作为系统的基础信息,可能会增加,重命名,甚至删除。User接口中包含UserType的对象作为一个成员。与Tutorial中的一对一关联不同。UserType不需要知道User的存在,即User和UserType是单向的组合关联。User和UserType的接口定义如表1,表2:注:一些不必要的字段被省略到此为止,一切都运行的很好。单向组合关联,级联更新等。-------问题:当外键需要关联到UserType的Code(编码)字段时出错-------因为用ID作外键,在多处部署的基础信息维护时,用户觉得不够方便,希望能用Code作为外键关联,这样用户只要在UserType中新建对应编码值的对象即可。因此,把User接口定义修改为表3的样子,但是gateway.cs报错,因为在gateway中要把一个Guid类型赋值给Code字段。考虑到可能是主键关系的问题,把UserType的ID字段去掉,将Code作为主键,即修改为表4的样子,可是问题依旧。因此,疑问如下:如何建立一个单向组合关系的外键关联,而且对应实体的主键为String类型?附件中带有工程源码,供参考,谢谢。表1:User接口定义publicinterfaceUser:Entity{[PrimaryKey]GuidID{get;set;}stringName{get;set;}[FkQuery("ID",Contained=true,LazyLoad=true)]UserTypeType{get;set;}}表2:UserType接口定义publicinterfaceUserType:Entity{[PrimaryKey]GuidID//主键{get;set;}stringCode//类型编码{get;set;}stringName//类型名称{get;set;}}表3:修改后的User接口定义publicinterfaceUser:Entity{[PrimaryKey]GuidID{get;set;}stringName{get;set;}[FkQuery("Code",Contained=true,LazyLoad=true)]//仅此地方将ID改为CodeUserTypeType{get;set;}}表4:修改后UserType接口定义publicinterfaceUserType:Entity{[PrimaryKey]stringCode//类型编码{get;set;}stringName//类型名称{get;set;}}

解决方案

解决方案二:
沒用過NBear,幫頂
解决方案三:
这么高分帮你up
解决方案四:
帮顶了先。
解决方案五:
up】
解决方案六:
谢谢楼上的兄弟帮顶。

时间: 2024-09-15 11:21:13

NBear中如何建立一个单向组合关系的外键关联,而且对应实体的主键为String类型?的相关文章

在Flash中怎样建立一个数组

数组 在Flash中怎样建立一个数组呢,有下面这些方法: 方法 1:创建初始长度为 0 的新 Array 对象. var my_array:Array = new Array();  trace(my_array.length); // 返回 0 方法 2:创建初始长度为 4 的新 Array 对象. var my_array:Array = new Array(4);  trace(my_array.length); // 返回 4 方法 3:创建初始长度为 5 的新 Array 对象 my_

一个关于插入一条数据如何拿该条数据主键的问题

问题描述 一个关于插入一条数据如何拿该条数据主键的问题 String action=request.getParameter("action"); if(action !=null && action.trim().equals("post")){ String title=request.getParameter("title"); System.out.println(title); String cont=request.g

是不是用JAVA做的BS项目里 javabean就对应数据库一个表 javabean必须有一个主键ID 对应数据库里表的主键 是这样吗

问题描述 是不是用JAVA做的BS项目里javabean就对应数据库一个表javabean必须有一个主键ID对应数据库里表的主键是这样吗 解决方案 解决方案二:请教各位大牛一下是这样的吗解决方案三:没人指点下嘛解决方案四:不是必须的.主要看业务.解决方案五:引用3楼chouy的回复: 不是必须的.主要看业务. 那hibernate不是都要指定主键生成器吗解决方案六:这样做最好了,省的想太多,如果某些表的某些字段经常使用,也可以考虑抽取出来解决方案七:最好指定ID

SQL server 2005中如何建立HTTP的端点

SQL2005提供了一个新的执行存储过程或者T-SQL的方法,它可以以WEB服务的方式发布到服务器上,而无须使用IIS 这个新特点通过HTTP API把HTTP端点暴露给用户,在WINXP SP2和WIN2003上被支持 建立一个HTTP端点是非常简单的,如下: CREATE ENDPOINT MyEndpoint?STATE = STARTEDAS HTTP ( AUTHENTICATION = (INTEGRATED), PATH = '/sql/myendpoint', PORTS = (

用C#和ADO.NET建立一个数据绑定网格

ado|数据 数据访问是任何应用程序的基础.在本文中,我将说明如何用C#和ADO.NET访问基于SQL Server的数据,以及如何在一个数据绑定的网格控件中显示数据.我用一个简单的C#应用程序为例. ADO.NET结构 使用ADO.NET不需要维持一个连接.另外,在ADO.NET中,只需用几行代码,你就可以从一个数据源转到另一个数据源. ADO.NET的核心对象有Command, Connection, DataReader和DataAdapter.它们是.NET中所有数据操作的基础. 核心A

c++的问题-c++中int是一个类么,c++中int是一个类么,取大神,取大神

问题描述 c++中int是一个类么,c++中int是一个类么,取大神,取大神 c++中int是一个类么,取大神,取大神,c++中int是一个类么,取大神,取大神,c++中int是一个类么,取大神,取大神 解决方案 int是基本类型,不是类.C++也不是完全面向对象的语言. 解决方案二: 不是-------- 解决方案三: 不是的哦,只是基本类型而已 解决方案四: int不是一个类.int是一种数据类型.数据类型就是固定内存大小的别名.int占四个字节.所以你定义一个int型变量,他占四个字节.

一对多条件查询问题-一对多条件查询?根据用户查询用户下的所有好友的通讯录然后条件查询通讯录中的某一个好友

问题描述 一对多条件查询?根据用户查询用户下的所有好友的通讯录然后条件查询通讯录中的某一个好友 public class Users implements java.io.Serializable { // Fields private Integer userid; private String uname; private String upwd; private Set messageses = new HashSet(0); } usersxml------ <?xml version=

快速理解MySQL中主键与外键的实例教程_Mysql

主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply 先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php?id=1   表示我要访问的是帖子id是1 的帖子- 再来说说外键,当我们删除某个帖子的时候,需要执行另一个操作,就是删除所有回帖,如果正常情况下,我们需要执行两次delete操作(thread和 reply),这时候如果存在外键,例如,在reply 表里面建立一个指向thread表

Java的Hibernate框架中的双向主键关联与双向外键关联_java

一.双向主键关联双向的主键关联其实是单向一对一主键关联的一种特殊情况,只不过要在关联对象的两端的映射文件中都要进行<one-to-one>的配置,另外还要在主映射的主键一端采用foreign外键关联属性. 这里同样使用Person和IdCard来讨论,一个人对应着一个唯一的身份证,而且一个身份证也唯一映射着一个人,所以这就产生了双向的关联关系,Person的主键同样也是IdCard的主键,分别是主键的同时也是外键,这种关联关系成为双向一对一映射,表现到关系模型中可如下图: 图中的两个表采用了主