今天使用EF的时候很奇怪的问题,添加属性后,使用程序包管理器控制台的NuGet命令更新无效,于是做了这个测试,一次性写好,自动更新,看看效果
1.首先建立一个MVC项目

2.我们选择Internet应用程序模板

 
 
3.确保程序引入了EF程序集,如果没有可以使用管理NuGet程序包联机下载最新版本的EntityFramework【也可以外部引用加载,但是由于使用的是CodeFirst模式,因此最低版本要求4.1】

 
4.为了简单演示我吧所有的需要创建类都放在一个文件里,代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace ProductsEFDemo.Models
{
public partial class Product
{
[HiddenInput(DisplayValue = false)]
public int ProductID { get; set; } [Required(ErrorMessage = "Please enter a product name")]
public string Name { get; set; } [Required(ErrorMessage = "Please enter a description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; } [Required]
[Range(0.01, double.MaxValue, ErrorMessage = "Please enter a positive price")]
public decimal Price { get; set; } [Required(ErrorMessage = "Please specify a category")]
public string Category { get; set; } public byte[] ImageData { get; set; } [HiddenInput(DisplayValue = false)]
public string ImageMimeType { get; set; }
} public class ProductContext : DbContext
{
public DbSet<Product> Products { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
} public class ProductsInitializer : DropCreateDatabaseIfModelChanges<ProductContext>
{
protected override void Seed(ProductContext context)
{
var products = new List<Product> {
new Product{ Name="袜子", Description="黑丝袜", Category="生活用品",Price=110m},
new Product{ Name="鞋子", Description="大头皮鞋", Category="生活用品", Price=125m},
new Product{ Name="手表", Description="瑞士金表", Category="装饰品 ", Price=135.5m}
};
products.ForEach(p => context.Products.Add(p));
context.SaveChanges();
}
}
}
由于我们此处覆盖了ProductContext默认的播种方法即数据的初始化方法,因此要重新注册这个DropCreateDatabaseIfModelChanges的子类 配置连接字符串【这里我使用VS2012自带的LocalDB数据库】
<connectionStrings>
<add name="ProductContext" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=ProductDB;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\ProductDB.mdf" providerName="System.Data.SqlClient" />
</connectionStrings> .我仅仅为了测试定义使用现有的HomeController中的Index方法,并添加了一个Edit方法开查看System.ComponentModel.DataAnnotations在定义的类中所起的作用是否有效,为了测试没有什么DI这类的概念,代码如下: private ProductContext context = new ProductContext(); public ViewResult Index()
{
return View(context.Products);
} public ActionResult Edit(int productId)
{
var product = context.Products.FirstOrDefault(p => p.ProductID == productId);
return View(product);
}
6、创建两个强类型的视图

7.运行查看效果

8、程序正常,我们添加一个无关紧要的测试属性

 
10、不使用NuGet控制台命令直接运行程序,一切正常,自动生成和更新的表如下:
 
11.总结:NetGet命令有时候固然很重要,但是要是用不好,可能在进行数据库迁移的时候让你蛋碎的一地,所以如果你不熟悉可以手动建表或许更加高效和稳定。Over!

下面是用命令控制更新的演示,可以不用看
===============================================================

关于EF的一个简单Demo的更多相关文章

  1. angular实现了一个简单demo,angular-weibo-favorites

    前面必须说一段 帮客户做了一个过渡期的项目,唯一的要求就是速度,我只是会点儿基础的php,于是就用tp帮客户做了这个项目.最近和客户架构沟通,后期想把项目重新做一下,就用现在最流行的技术,暂时想的使用 ...

  2. 在cengos中安装zabbix server/agent, 并创建一个简单demo

    添加zabbix更新源 rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch ...

  3. 基于EF的一个简单实战型分层架构

    注:此博客仅适合于刚入门的Asp.net Core初学者,仅做参考. 学了3个月的Asp.net Core,将之前一个系统(http://caijt.com/it)的PHP后端用Asp.net Cor ...

  4. Log4net - 项目使用的一个简单Demo

    参考页面: http://www.yuanjiaocheng.net/entity/entitytypes.html http://www.yuanjiaocheng.net/entity/entit ...

  5. Android中调用C++函数的一个简单Demo

    这里我不想多解释什么,对于什么JNI和NDK的相关内容大家自己去百度或谷歌.我对Android的学习也只是个新手.废话少说直接进入正题. 一.在Eclipse中创建一个Android Applicat ...

  6. 用redis来实现Session保存的一个简单Demo

    现在很多项目都用Redis(RedisSessionStateProvider)来保存Session数据,但是最近遇到一个比较典型的情况,需要把用户数据全部load到redis里面,在加上RedisS ...

  7. gin框架初识(先跑一个简单demo) ①

    Gin 是一个 go 写的 web 框架,具有高性能的优点.官方地址:https://github.com/gin-gonic/gin 先跑一个demo(先安装gin框架,具体见官方地址): 1.vs ...

  8. 【转】用Pthread创建线程的一个简单Demo

    一.我们直接在COCOS2D-X自带的HelloWorld工程中添加代码.首先将Pthread的文件包含进来包括lib文件.在HelloWorld.cpp中引入头文件和库. #include &quo ...

  9. COCOS2D-X之圆形进度条的一个简单Demo

    这应该是游戏中很常见的一个效果.显示某个事件的进度等,在加载资源或者联网的时候经常用到.所以有必要学习学习 一.我们直接在COCOS2D-X自带的HelloCpp的工程中添加代码即可.我们在初始化中添 ...

随机推荐

  1. JavaScript数组的方法

    push()     :将参数加载到数组的最后,返回数组的长度 pop()    :删除数组的最后一个元素,返回删除的值 shift()      :删除数组的第一个元素,返回删除的值 unshift ...

  2. C#汉字转拼音帮助类

    using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...

  3. bzoj 3295 动态逆序对 CDQ分支

    容易看出ans[i]=ans[i-1]-q[i],q[i]为删去第i个数减少的逆序对. 先用树状数组算出最开始的逆序对,预处理出每个数前边比它大的和后边比它小的,就求出了q[i]的初始值. 设b[i] ...

  4. js-JavaScript高级程序设计学习笔记19

    第22章 高级技巧 1.高级函数 1.安全的类型检测. typeof,instanceof并非完全可靠. 安全的类型检测:使用Object原生的toString()方法. function isArr ...

  5. WinForm------SimpleButton去掉点击时的边框

    设置属性

  6. 搬家到cnblogs

    从openshift搬到LOFTER再到点点然后来cnblogs,晃悠一大圈,主要是没时间学习很多东西,再加上cnblogs的搜索收录情况比较好一点(百 度搜索).另外听闻百度空间bye-bye了,以 ...

  7. Mongo DB 2.6 需要知道的一些自身限定

    在现实的世界中,任何事情都有两面性,在程序的世界中,亦然! 我们不论是在使用一门新的语言,还是一门新的技术,在了解它有多么的让人兴奋,让人轻松,多么的优秀之余,还是很有必要了解一些他的局限性,方便你在 ...

  8. 【Unity3D】利用Shader以及更改Mesh实现2D游戏的动态阴影效果

    最近看到一个非常有趣的益智小游戏,是一个盗贼进入房子偷东西的, 其实这种游戏市面上已经很多了,吸引我的是那个类似手电筒的效果, 主角走到哪里,光就到哪里,被挡住的地方还有阴影.有点类似策略游戏里的战争 ...

  9. tyvj1198 最优矩阵连乘

    描述    一个n*m矩阵由n行m列共n*m个数排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算量为nmp.   矩阵乘法满 ...

  10. Response.End()出现ThreadAbortException 异常

    A. 如果使用 Response.End.Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常.异常内容:由于代码已经过 ...