一、准备工作
    使用NUGET安装Entity Framework 6,下载MySql Connector/Net 6.9.5
 
二、创建实体
    我们在下面创建了两个类(博客和文章),并使用了虚拟属性标识了他们的关系。这使得实体框架具有了延迟加载特性,延迟加载意味着从数据库加载内容的时候将会自动加载关联实体的内容(除了我们设置了禁用延迟加载)。
 

public class Blog
{
public int BlogId { get; set; } public string Name { get; set; } public virtual List<Post> Posts { get; set; }
} public class Post
{
public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public virtual Blog Blog { get; set; }
}
三、创建Context&生成数据库
    新建一个Blogging类继承DbContext,在构造函数指定使用的数据库连接,如果不指定默认是使用MS SQL。

public class BloggingContext : DbContext
{
public BloggingContext()
: base("MySqlServer")
{ } public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; }
}
读取和写入数据
    运行这个应用程序的时候,EF会自动帮我们创建数据库如果还没有创建数据库。

class Program
{
static void Main(string[] args)
{
using (BloggingContext db = new BloggingContext())
{
db.Blogs.Add(new Blog { Name = "Another Blog" });
db.SaveChanges(); foreach (var blog in db.Blogs)
{
Console.WriteLine(blog.Name);
}
} Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
当执行完成我们就可以去查看生成的数据库
生成如下
 
 
五、更改数据模型
在Package Manager Console输入 Eable-Migrations 开启EF迁移功能
运行成功之后会在我们的项目文件下增加Migrations文件夹以及Configuration.cs,这个文件包含迁移Blogging的设置。
 
对Blogs类增加Url属性,在刚才的PMC输入 PM> Add-Migration AddUrl 会报下面错误
No MigrationSqlGenerator found for provider 'MySql.Data.MySqlClient'. Use the SetSqlGenerator method in the target migrations configuration class to register additional SQL generators.
 
在重新运行上面命令正确生成类文件
 
其实到了这里还没有真正的更新数据库我们还需要执行 Update-Database -Verbose
查看数据库已经成功更新
 
六、Fluent API
我们使用这个API来修改数据库的表设置
在执行修改的迁移命令
成功更新数据库
 

最新文章

  1. Tensorflow二分类处理dense或者sparse(文本分类)的输入数据
  2. 用实例讲解RSA加密算法(精)
  3. 使用JavaScript的history对象来实现页面前进后退(go/back/forward)。
  4. Linux压缩打包命令
  5. mysql中替换字符串(正则) 模糊
  6. volley 应用 GET POST请求 图片异步加载
  7. VJP1063 迎春舞会之集体舞(DP)
  8. HDU_2156 分数矩阵
  9. Android 5.0 全新的动画
  10. c#无限循环线程如何正确退出
  11. 手动打包MVC项目成Web Deploy包,发布至服务器
  12. 论文笔记(6):Weakly-and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation
  13. bootstrap 失效的原因
  14. text-transform CSS
  15. 批处理bat标准化获取当前系统日期的几种方法,补0
  16. 35道Redis面试题
  17. MySQL 报错
  18. 使用jquery获取url以及jquery获取url参数的方法(转)
  19. linux服务器操作小技巧
  20. ThreadLocal分析

热门文章

  1. iOS开发 - Swift - 自己写的一个九宫格解锁的Demo
  2. C#高效率复制对象
  3. 【64.22%】【codefoces round 382A】Ostap and Grasshopper
  4. Linux四个常用的指挥机关处理具体的解释
  5. Hadoop和RDBMS的混合系统介绍
  6. 解决无法定位程序输入点SymEnumSymbols于动态链接库dbghelp.dll
  7. three.js 初学小示例
  8. ubuntu12.04下编译安装x86平台qt库qt-everywhere-opensource-src-4.8.5
  9. NS2网络模拟(3)-吞吐率
  10. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK