码迷,mamicode.com
首页 > 其他好文 > 详细

EF实体框架创建方法

时间:2015-11-14 09:53:53      阅读:510      评论:0      收藏:0      [点我收藏+]

标签:

EF实体框架创建方法: 

1、添加EF框架:

在工程中,先添加文件夹:DataModel(方便管理),在文件夹中再添加新项:数据--ADO.Net实体数据模型:
命名为: DataModel.edmx。并勾选“确定对象名称的单复数形式”(会创建集合和项的名称区别)。

2、数据模型文件说明:

DataModel.edmx:生成的数据模型文件包。
DataModel.Context.cs:包括模型中,所有表集合的管理类。
DataModel.tt子节点下的文件:表数据类的定义(映射)。

3、问题:

1、生成数据模型以后,很多外键,需要手动修改。--不需修改。

2、需要手动创建一些枚举变量(在模型浏览器中)。

自动生成很多Nullable<byte>变量,对于记录状态的字段,需要手动定义枚举类型。

Nullable<byte>:表示可以为空的<byte>类型字段。---不需修改。


定义枚举类型方法:----重点!

以 (任务表)中的任务状态为例:
1)点击数据库模型文件 DataModel.edmx,左侧显示数据库关系图,在关系图中任意单击,
在解决方案管理器旁边选择“模型浏览器”。

2)DataModel--实体类型中,选择xx表,右键“在关系图中显示”。在图中的字段右键“转换到枚举”,然后定义即可。

建议:但是这样定义比较麻烦,可以先自定义枚举类型,然后进行引用。
这样的好处是:1.当删除数据模型时,枚举定义还在,只需重新添加枚举类型引用即可!
2.以后修改,更加灵活。

引用方法:

勾选“引用外部类型”,添加“命名空间.枚举类型名”,并还要在“枚举类型名”上添加“枚举类型名”即可。
(此处有Bug,当枚举类型已使用过,不能再重复使用,需要重新创建并改名!)

说明:如果定义错误了,或者想修改:
1.不建议:先删除表,然后右键“从数据库更新模型”即可恢复原来的表。(杀鸡用了牛刀了)
2.建议方法:字段属性--类型,改为原来的类型,如Byte。并删除模型浏览器中对应的枚举类型。

3)然后,编译通过即可。

说明:在模型浏览器中,表右键--“表映射”,可查看字段映射后的对应类型。

注意:建议模型创建以后,只更新数据模型,如果删除数据模型,重新建立时还需要重新添加引用!!


命名空间:

DataService.DataDomain.StatusType
DataService.DataDomain.ImageType


4、数据模型的使用:

using (DataEntities entities = new DataEntities())
{
s_role item = new s_role();
item.role_id = Guid.NewGuid();
item.role_name = "管理员";

entities.s_role.Add(item);
entities.SaveChanges();
}

数据库用户:

5、常见问题:

问题1、指定的架构无效。错误:
找不到概念类型“DataModel.ChildStatusType”的对应对象层类型。
以下信息对于解决上一个错误可能很有用:
CLR 枚举类型的基础类型与 EDM 枚举类型的基础类型不匹配。

解决方法:枚举类型数据结构与DB数据类型不一致,枚举定义添加基类byte等。如下

public enum StatusType : byte
{
NoProcess = 0,
Processing,
Processed,
}


问题2、连接本地DB正确,连接远程DB报错:

由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从
ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或在打开每个 Microsoft .NET
Framework 3.0 SDK 文档的跟踪的同时检查服务器跟踪日志。

解决问题:在远程DB上创建访问用户并分配权限即可。

 

EF实体框架创建方法

标签:

原文地址:http://www.cnblogs.com/dblg/p/4963899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!