zoukankan      html  css  js  c++  java
  • EF实体框架创建方法

    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上创建访问用户并分配权限即可。

  • 相关阅读:
    软工个人项目作业
    软工个人博客作业(2)
    软工第一次作业-热身
    OO第四单元
    OO第三单元
    OO第二单元总结
    面向对象UML单元总结及课程总结
    JML单元总结
    面向对象设计与构造第二单元总结
    OO第一单元小结
  • 原文地址:https://www.cnblogs.com/dblg/p/4963899.html
Copyright © 2011-2022 走看看