㈠ 如何:将修改函数映射到存储过程(实体数据模型工具)
实体框架生成一个从 ObjectContext 派生的类,该类表示概念模型中的实体容器。(该派生类的名称即是概念模型文件中的EntityContainer 的名称。)该类公开 SaveChanges 方法,该方法触发对基础数据库的更新。这些更新操作可以使用系统自动生成的 sql 语句(默认),也可以使用开发人员所指定的存储过程。无论是否使用存储过程来更新数据库,用于创建、更新和删除实体的应用程序代码都是一样的。注意:如果没有将实体类型的插入、更新或删除这三种操作全部映射到存储过程,则在运行时执行的情况下未映射的操作将失败且会引发 UpdateException。下面的过程假定您已在实体设计器中打开一个 .edmx 文件。将插入操作映射到存储过程将插入操作映射到存储过程在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择“存储过程映射”。此时将出现“映射详细信息”窗口的“将实体映射到函数”视图。单击“<选择插入函数>”。在下拉列表中选择插入操作要映射到的存储过程。窗口中填充的是实体属性与存储过程参数之间的默认映射。通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。注意:所有实体键都必须具有映射。如果存储过程使用 INSERT 语句,则实体键通常映射到插入新行时创建的主键。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。单击“<添加结果绑定>”。该字段即变为可编辑状态。键入包含存储过程返回的数据的参数名称。单击对应于参数名称的属性字段。该字段将变成一个下拉属性列表。选择返回的数据要映射到的属性。注意:对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。如果在调用插入操作时针对某参数选中该复选框且返回的值为零,将引发 。对每个返回值和未映射属性重复步骤 5 到 8。现在,所选实体类型的插入操作已映射到存储过程。将更新操作映射到存储过程将更新操作映射到存储过程在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择“存储过程映射”。此时将出现“映射详细信息”窗口的“将实体映射到函数”视图。单击“<选择更新函数>”。在下拉列表中选择更新操作要映射到的存储过程。窗口中填充的是实体属性与存储过程参数之间的默认映射。通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。对于每个属性,都可以选中在“使用原始值”[Use Original Value]列中的复选框。通过“使用原始值”[Use Original Value]选项,可以使用并发控制。如果选中某个属性的“使用原始值”[Use Original Value]选项,则从数据库读取的该属性的值将传递给指定的存储过程参数。请注意,属性的原始值和当前值都可以传递给不同的参数。注意:映射更新操作时,可以将存储过程返回的数据映射到实体属性。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。单击“<添加结果绑定>”。该字段即变为可编辑状态。键入包含存储过程返回的数据的参数名称。单击对应于参数名称的属性字段。在下拉列表中选择返回的数据要映射到的属性。注意:对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。如果在调用更新操作时针对某参数选中该复选框且返回的值为零,将引发 。可以选择对每个返回值重复步骤 6 到 9。现在,所选实体类型的更新操作已映射到存储过程。将删除操作映射到存储过程将删除操作映射到存储过程 在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择“存储过程映射”。此时将出现“映射详细信息”窗口的“将实体映射到函数”视图。单击“<选择删除函数>”。在下拉列表中选择删除操作要映射到的存储过程。窗口中填充的是实体属性与存储过程参数之间的默认映射。通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。注意:必须将关联映射到存储过程参数。在属性下拉列表中,可以选择关联。注意:对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。另请参见任务演练:将一个实体映射到存储过程(实体数据模型工具)
㈡ 枚举类型映射到数据库中以什么存在
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型。如果没有显式声明基础类型,则使用 Int32。编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。 注意:枚举类型的基类型是除 Char 外的任何整型
㈢ 如何将持久化类中集合属性为组件映射到底层数据库
Hibernate由pojo(持久化类),映射文件,配置文件。映射文件和配型类型是XML.
映射文件的作用主要是设定持久化类里的属性和数据库表中的列对应情况。
配置文件的作用主要是设定与那个数据库相连接以及数据库的password和loginname
看到这里就应该明白了吧!!
㈣ 怎样不通过框架,将javabean映射到数据库中
你如何用实体框架,象HIBERNATE这样的ORM的时候,
首先考虑的肯定是BEAN实体类,也就是面向对象编程,面向对象操作数据库了.
但是考虑到关联关系的时候,情况就复杂些了.
比如一对多的情况:
拿博客系统来说吧
一篇文章BLOG,肯定有一个BLOGID,这个BLOGID肯定是唯一的
BLOG(BLOGID,USERID,TITLE,CONTENT,MSGS)(博客ID,用户ID,标题,内容,评论)
现在有人对这个BLOG进行评论
评论MSG(MSGID,USERID,BLOG,MESSAGE)(评论ID,用户ID,博客,评论内容)
这有两个实体类,BLOG和MSG是一对多双向关联关系.
也就是说,根据这个BLOG可以知道这个BLOG下面所有的评论.
而某个MSG,肯定是对某一个BLOG进行评论的.
BLOG里面保存着评论的信息MSGS,MSGS肯定是个集合.
其中MSG里面保存着BLOG的信息.
实体类大概是上面那样.
下面就要建立关联关系的映射了.
一对多的关联关系的映射,主要体现在多的这一端,而多的这一端在数据库中体现就是外键.
也就是说,BLOG类中的MSGS是帖MSG来决定的,而数据库中,BLOG表肯定是没有MSG的任何字段信息.
但是MSG中肯定有BLOG实体类BLOGID.
有时候多个表也可以设计成一个BEAN.看情况设计喽.
建立楼主去研究下HIBERNATE里面的关联关系及其映射,
看实体类和数据库中表的详细情况.
㈤ 大家用什么工具进行数据库和实体类的转换
可以根据规律来编写一些程序来生成这些代码,这个生成代码的程序就是代码生成器。
现阶段代码生成器有很多,其中我个人认为CodeSmith的功能最为强大。基本上你想要生成什么样的代码都可以根据模版来生成,模版有自带的,有别人编写的,当然,你觉得不够,也可以自己编写模版。
至于如何根据数据库生成实体类。
他的原理是数据库中的字段就是将来生成实体类中的私有变量和属性。
所以我们可以编写模版来读取数据库中的字段,然后来根据数据库中的字段来生成你所需要的变量和属性。
至于Codesmith的具体使用,比较简单,可以到网上搜索一下,有很多的介绍。
㈥ 如何将含有继承关系的类图映射为关系数据库
库。
通常使用以下两种方法来映射继承关系:
1)将基类映射到一张表,每个子类映射到一张表。在基类对应的表中定义主键,而在
子类对应的表中定义外键。
2)将每个子类映射到一张表,没有基类表。在每个子类的表中包括基类的所有属性。
这种方法适用于子类的个数不多,基类属性比较少的情况。
㈦ 怎样将类图直接转换为数据库的表
库。 通常使用以下两种方法来映射继承关系: 1)将基类映射到一张表,每个子类映射到一张表。在基类对应的表中定义主键,而在 子类对应的表中定义外键。 2)将每个子类映射到一张表,没有基类表。在每个子类的表中包括基类的所有属性。 这种方法适用于子类的个数不多,基类属性比较少的情况。
㈧ 在HIbernate中,实体类如何映射到数据库
是通过映射文件来映射的。举个简单的例子,例如我有个Teacher实体类(某教学管理系统老师用户):
private Integer id; //编号
private String name; //姓名
private String password; //密码
private Date createDate; //创建日期
同时,我创建了数据表TEACHER:
create table teacher( id number(9) primary key, --编号 name varchar2(20), --姓名 password varchar2(20), --密码 create_date date --创建日期 );
这时,怎么关联它们呢?通过加载hibernate框架,我们就可以使用映射文件来关联实体类和数据库了
文件名:Teacher.hbm.xml(必须与实体类名字一致)
内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools-->
<hibernate-mapping>
<class name="com.yss.Teacher" table="TEACHER" schema="WZM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="9" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="20" />
</property>
<property name="createDate" type="java.util.Date">
<column name="CREATE_DATE" length="7" />
</property>
</class>
</hibernate-mapping>
当然,这只是比较简单的映射,还有什么多对多,一对多等映射,并且映射时如何设置以达到需要的效果,这些你可以在网上搜索相关资料自行查看。
㈨ 请问我用Linq映射到数据库表Book,为什么我想添加数据时,没有Add方法呢
linq to sql 类 可以通过修改配置来完成复数命名。
VS--》工具--》选项--》数据库工具--》O/R 设计器--》启用复数 是TRUE
如上方式就生成带复数的实体了
---------------------
手动修改也可以!特定模板工具也可以. 估计大一些的项目组用自己的模板.
个人认为还是单数理由更多一些,所以微软默认是单数!
-----
至于你说的add 方法 应该是为了项目一致而个人添加的方法.
一般Add 实现方法核心!
using (XXXDataContext db = new XXXDataContext())
{
db.实体集.InsertOnSubmit(实体);
db.SubmitChanges();
}
-----
另一种采用模型封装
public class EShopDao<TEntity, TDataContext, TPK> : DBSupport, IGenericDao<TEntity, TDataContext, TPK>
where TDataContext : DataContext, new()
where TEntity : class
{
public void Insert(TEntity entity, bool submitFlag)
{
DataContext.GetTable<TEntity>().InsertOnSubmit(entity);
if (submitFlag)
{
DataContext.SubmitChanges();
}
}
}
---
到目前为止 我发现 linq to sql 怕是不如 直接研究EDM ,感觉很多看似为了一致而去画蛇添足.