---------------------目录--------------------------

EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2015-07-22 17:30)

EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理 (2015-07-14 17:50)

EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手 (2015-07-13 10:48)

---------------------目录--------------------------

首先感谢大家的支持,最近比较忙,不过会抽时间讲完Code First的 谢谢大家的支持 想更多的学习资源,可以访问我的主页的,谢谢

这集我们来学习定义一个数据结构,首先看一下.NET类型和SQL类型的对应表,左侧是sql类型,右侧是.NET类型

1 配置简单属性
这里,我们继续使用Person这个类来配置属性,修改后代码如下:
 public class Person
{
public int PersonId { get; set; }
[MaxLength()]
public string FirstName { get; set; }
[MaxLength()]
public string LastName { get; set; }
[StringLength(, MinimumLength = )]
[Column(TypeName = "char")]
public string MiddleName { get; set; }
}
给每个属性添加了一些属性标注,
其中MaxLength(30)表示字段的最大长度为30,
StringLength表示最小长度和最大长度MinimumLength

[Column(TypeName = "char")] 表示该列属性是一个char类型

需要引用System.ComponentModel.DataAnnotations这个程序集
下面我们写下面的代码,然后执行
static void Main(string[] args)
{
//更多资料可以登录本人的主页:www.bamn.cn 欢迎大家
using (var personContext = new Context())
{
//如果不存在数据库则创建
bool res = personContext.Database.CreateIfNotExists();
//往数据库中添加数据
var person = new Person
{
FirstName = "John",
LastName = "Doe",
MiddleName = "Mid"
};
personContext.People.Add(person);
personContext.SaveChanges();
//获取数据
var savedPeople = personContext.People;
foreach (var p in savedPeople)
{
Console.WriteLine("Last name:{0},first name:{1},id {2},mid={3}",
p.LastName, p.FirstName, p.PersonId,p.MiddleName);
}
} Console.ReadKey();
}
 
需要当我们晕写代码的时候,报下面的异常
“System.InvalidOperationException”类型的未经处理的异常在 EntityFramework.dll 中发生 
其他信息: The model backing the 'Context' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
 
我们后面再来解决这个问题,下面先临时解决,首先我们先删除我们的数据库 就算以前连接的那个数据库EFDemo
删除后,我们再次运行
发现还是报下面的异常
“System.Data.Entity.Validation.DbEntityValidationException”类型的未经处理的异常在 EntityFramework.dll 中发生 
其他信息: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
 
但是我们访问数据库的时候,发现我们的表已经创建了
这里要给大家说一下,就是,我们使用CODE FIRST 我们是不用实现创建好数据库的
 
这里大家要注意一下
然后我们发现,我们的数据库字段已经有相应的属性了,比如FirstName 是nvarchar 30的长度 然后middleName是char 一位
所以大家应该知道我们刚才报的错误是什么原因了
所以我们将上面的代码修改为
再次执行
代码成功执行
 
如果用户输入的名字超过30个字节,我们应该给个错误提示的
 
 [MaxLength(, ErrorMessage = "你的名超过了30个字节")]
public string FirstName { get; set; }
这里的错误提示是支持国际化的,可以是其他的语言
 
本集所有代码:
class Program
{
static void Main(string[] args)
{
//更多资料可以登录本人的主页:www.bamn.cn 欢迎大家
using (var personContext = new Context())
{
//如果不存在数据库则创建
bool res = personContext.Database.CreateIfNotExists();
//往数据库中添加数据
var person = new Person
{
FirstName = "John",
LastName = "Doe",
MiddleName = "M"
};
personContext.People.Add(person);
personContext.SaveChanges();
//获取数据
var savedPeople = personContext.People;
foreach (var p in savedPeople)
{
Console.WriteLine("Last name:{0},first name:{1},id {2},mid={3}",
p.LastName, p.FirstName, p.PersonId,p.MiddleName);
}
} Console.ReadKey();
}
}
public class Person
{
public int PersonId { get; set; }
[MaxLength(, ErrorMessage = "你的名超过了30个字节")]
public string FirstName { get; set; }
[MaxLength()]
public string LastName { get; set; }
[StringLength(, MinimumLength = )]
[Column(TypeName = "char")]
public string MiddleName { get; set; }
}
public class Context : DbContext
{
public Context()
: base("name=chapter2")
{
}
public DbSet<Person> People { get; set; }
}
感谢你的阅读:
本集代码下载:http://pan.baidu.com/s/1gdlgRbP

EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性的更多相关文章

  1. EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理

    -----------------------------------------------------目录--------------------------------------------- ...

  2. EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据

    ---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据  ...

  3. EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手

    ----------------------------目录------------------------------ EntityFramework 5.0 CodeFirst 教程03-数据结构 ...

  4. WCF入门教程(三)定义服务协定--属性标签

    WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...

  5. Greenplum5.16.0 安装教程

    Greenplum5.16.0 安装教程 一.环境说明 1.1官方网站 Greenplum官方安装说明:https://gpdb.docs.pivotal.io/5160/install_guide/ ...

  6. 一步步Cobol 400 上手自学入门教程03 - 数据部

    数据部的作用 程序中涉及到的全部数据(输入.输出.中间)都要在此定义,对它们的属性进行说明.主要描述以下属性: 数据类型(数值/字符)和存储形式(长度) 数据项之间的关系(层次和层号) 文件与记录的关 ...

  7. [译]Vulkan教程(03)开发环境

    [译]Vulkan教程(03)开发环境 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第3篇. In this chapter we'll set up y ...

  8. 【读书笔记】关于《精通C#(第6版)》与《C#5.0图解教程》中的一点矛盾的地方

    志铭-2020年2月8日 03:32:03 先说明,这是一个旧问题,很久很久以前大家就讨论了, 哈哈哈,而且先声明这是一个很无聊的问题,

  9. EntityFramework 7.0之初探【基于VS 2015】(十)

    前言 本篇作为EF 7.0的开篇也是Entity Framework目前系列末篇,因为关于EF 7.0学习资料实在是太少,我都是参考老外的资料花费了不少时间去研究去尝试同时也失败多次,个人觉得那是值得 ...

随机推荐

  1. 《UNIX环境高级编程》笔记--环境变量

    ISO C定义了一个函数getenv,可以用其取环境变量值. #include <stdlib.h> char* getenv(const char* name); //返回与name关联 ...

  2. .NET开发过程中的全文索引使用技巧之Solr(转)

       前言:相信许多人都听说过.net开发过程中基于Lucene.net实现的全文索引,而Solr是一个高性能,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询 ...

  3. 使用MultipartEntity对文字、图片、视频进行综合上传

    package com.home.upload; import java.io.File; import java.nio.charset.Charset; import java.util.Arra ...

  4. POJ 1755 Triathlon 半平面交

    看的这里:http://blog.csdn.net/non_cease/article/details/7820361 题意:铁人三项比赛,给出n个人进行每一项的速度vi, ui, wi;  对每个人 ...

  5. Github上Stars最多的53个深度学习项目,TensorFlow遥遥领先

    原文:https://github.com/aymericdamien/TopDeepLearning 项目名称 Stars 项目介绍 TensorFlow 29622 使用数据流图计算可扩展机器学习 ...

  6. Mongo如何在多个字段中查询某个关键字?

    If a text index has multiple fields in Mongo, how can I do a search in only one field since the weig ...

  7. 【Nodejs】外研社一年级起三年级下MP3下载爬虫1.00

    //====================================================== // 外研社一年级起三年级下MP3下载爬虫1.00 // 2018年5月9日 //== ...

  8. linux install nodejs

    下载/安装python yum install -y bzip2* #nodejs 0.8.5需要,请安装python前,先安装此模块.   wget http://www.python.org/ft ...

  9. CAD VC++安装失败 1603错误

    问题描述 想安装一个高版本的CAD来着,可安装报错始终报错1603.具体表现为 DESKTOP-F7K8C37    Installing Microsoft Visual C++ 2008 SP1 ...

  10. iOS 获取APP相关信息 私有API

    /* Generated by RuntimeBrowser Image: /System/Library/Frameworks/MobileCoreServices.framework/Mobile ...