1.配置类

<connectionStrings>
<add name="test1" connectionString="Data Source=.;Initial Catalog=test1;Integrated Security=true" providerName="System.Data.SqlClient" />
</connectionStrings>

internal sealed class Configuration<TContext> : DbMigrationsConfiguration<TContext> where TContext : DbContext
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}

protected override void Seed(TContext context)
{

}
}

2.初始化类

public SchoolContext() : base("name=test1")
{
}
static SchoolContext()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<SchoolContext, Configuration<SchoolContext>>());
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
}

3.实体类

public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
//public int Text { get; set; }
public virtual Course Course { get; set; }
}
public class Course
{
public int StudentID { get; set; }
public string Name { get; set; }
[JsonIgnore]
public virtual Student Student { get; set; }
}

4.映射类

public class StudentMap : EntityTypeConfiguration<Student>
{
public StudentMap()
{
ToTable("Student");
HasKey(d => d.ID);

HasRequired(p => p.Course).WithRequiredPrincipal(p => p.Student);
HasOptional(p => p.Course).WithRequired(p => p.Student);
}
}
public class CourseMap : EntityTypeConfiguration<Course>
{
public CourseMap()
{
ToTable("Course");
HasKey(p => p.StudentID);
}
}

5.测试

SchoolContext ctx = new SchoolContext();
var s = new Student()
{
Name = "1",
Age = 12,
Course = new Course() { Name = "12" }
};
ctx.Set<Student>().Add(s);
ctx.SaveChanges();

var list = ctx.Set<Student>().ToList();
var jsonString = JsonConvert.SerializeObject(list);
Console.WriteLine(jsonString);
Console.ReadLine();

好。搞定。就这么简单。我也研究了半天,看了很多资料。就可以修改实体类看看数据库的变法吧。

最新文章

  1. PHP AES的加密解密
  2. 《微信开发日志》之OAuth2验证接口
  3. 使用NPOI操纵Excle,并输入到客户端
  4. jQuery 判断所有图片加载完成
  5. python基础 - 文件读写
  6. Android开发中如何强制横屏和强制竖屏设置
  7. CentOS下几种软件安装方式
  8. iOS开发之监听键盘高度的变化 分类: ios技术 2015-04-21 12:04 233人阅读 评论(0) 收藏
  9. 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 3
  10. 两个java项目,跨域访问时,浏览器不能正确解析数据问题
  11. asp.net中使用jquery ajax保存富文本的问题
  12. [原创]基于Zynq Linux环境搭建(二)
  13. git commit -m 提交的内容换行
  14. SpringBoot 整合使用dubbo
  15. AD提高动态的方法(附SNR计算)
  16. IIS 下载文件 报错“401 - 未授权: 由于凭据无效,访问被拒绝。”
  17. vim+ctags用法
  18. ZooKeeper系列(3)--基于ZooKeeper实现主从协作
  19. c版基于链表的插入排序(改进版)
  20. 线程中event.wait() event_obj.set() 的使用

热门文章

  1. source tree 推送错误解决
  2. leetcode174. Dungeon Game
  3. [转]:Delphi中Format的字符串格式化使用说明
  4. 关于 JavaScript prototype __proto__ 一点总结
  5. 在vivado中使用attribute
  6. Media Queries详解
  7. js类式继承模式学习心得
  8. php 判断文件/目录是否存的方法
  9. percona-toolkit工具包的安装和使用
  10. Winform 窗体单例