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