你的位置:首页 > ASP.net教程

[ASP.net教程]初学EF CodeFirst遇到的创建表的问题


  最近开始学EF CodeFirst,在学习的初期我就遇到了一个问题,创建一张表的时候总是报错误。

  Message:An error occurred while updating the entries. See the inner exception for details.

  InnerException: "对象名 'dbo.XXXX' 无效。"

  我根据网上的各种方案来解决。。。。。。然并卵!然后在博问提问。。。。。。本想找个老司机带带路的(估计问题描述的不给力!),然并卵!伤心!

  好了,先简单说下我的这个小白问题,很简单的一个问题,在第一天的学习中,我在Sql Server中新建了两张表,两张表的Model如下:

public class Destination  {    public int DestinationId { get; set; }    public string Name { get; set; }    public string Country { get; set; }    public string Description { get; set; }    public byte[] Photo { get; set; }    public List<Lodging> Lodgings { get; set; }  }public class Lodging  {    public int LodgingId { get; set; }    public string Name { get; set; }    public string Owner { get; set; }    public bool IsResort { get; set; }    public Destination Destination { get; set; }  }

再加上一些其他的小知识点,当天的学习就结束了,然后第二天我在继续学习的时候我新建一张新表的时候,确总是报错,说对象不存在,如下:

public class Person  {    public int SocialSecurityNumber { get; set; }    public string FirstName { get; set; }    public string LastName { get; set; }    public byte[] RowVersion { get; set; }  }static void Main(string[] args)    {      try      {        InserPerson();      }      catch (Exception ex)      {        var ss = ex.Message;      }      Console.ReadKey();    }    static void InserPerson()    {      var model = new Person      {        FirstName = "Rowan",        LastName = "Miller",        SocialSecurityNumber = 12345678      };      using (var context = new BreakAwayContext())      {        context.People.Add(model);        context.SaveChanges();      }    }

我想看到这儿的应该知道我哪里错了!但是我当时一脸懵逼的,我各种求帮助都没有解决,就在我快放弃的时候,我突然想起,在我第一天学习的时候有个对象DropCreateDatabaseIfModelChanges,这个对象的作用就跟他的英文直译的意思一个样,就是如果你先创建了一张表,但是后来你要修改约束,就需要用这个了。这个对象继承的是IDatabaseInitializer这个接口,得,我就搜索了这个接口,然后再MSDN中找到了它。。。

地址:https://msdn.microsoft.com/en-us/library/gg696323(v=vs.113).aspx

然后不负我的期望,我找到我想要的,继承这个接口的有三个,分别是DropCreateDatabaseIfModelChanges,DropCreateDatabaseAlways, CreateDatabaseIfNotExists

大家看名字也就知道他的用途了(这里不得不说的是好的命名的确比详细的注释更给力),当然也可以搜索一下,介绍这三个对象的也有很对博客文章。

 

  但是我想说的是,然并卵啊。。。。。。最后我才醒悟,正常情况下,我们是创建好我们需要的Model后才或才是创建表,如果后期需求的增加或者变更,我们只有先在数据库中增加表,然后再在代码中增加Model,和进行相关的配置,不能通过代码再去增加表。

  好了,就记这些,有错,请留个言,谢谢!




巴厘岛旅游团报价优惠巴厘岛蜜月旅游行程参考巴厘岛特价旅游多少钱到巴厘岛游费用报价大全巴厘岛自助游攻略2015英德天门沟九州驿站开车路线?英德天门沟风景区自驾要多久? 英德天门沟有直达车吗?九州驿站英德天门沟站在哪里坐车? 故乡里主题公园有直达车吗?清远故乡里在哪里坐车? 广州花都故乡里开车怎么走?故乡里开车要多久? 呀诺达教师节活动?三亚呀诺达教师有什么优惠? 深圳欢乐海岸麦鲁小镇怎么玩?欢乐海岸麦鲁小镇游玩项目有哪些? 北京欢乐谷有什么好玩的? 欢乐海岸麦鲁小城团购票价?深圳欢乐海岸麦鲁小城好玩不? 大唐芙蓉园门票预定?西安大唐芙蓉园门票团购便宜吗? 大唐芙蓉园门票价格2015?西安大唐芙蓉园订票? 王子谷漂流小孩能漂吗?千岛湖富文王子谷漂流适合多大的儿童玩? 大唐芙蓉园梦回大唐票价?西安大唐芙蓉园梦回大唐演出时间? 用过的实名制火车票可以扔掉吗? 春节去桂林旅游天气怎么样?穿什么衣服? 2015年过年回家票价会涨吗? 火车票提前几个小时可以退?火车票退票时间是多少? 556-3337-804F Datasheet 556-3337-804F Datasheet 556-3337-817 Datasheet 556-3337-817 Datasheet 556-3337-817F Datasheet 556-3337-817F Datasheet 南京香港旅游 南京香港旅游 南京香港旅游 乌鲁木齐香港游 乌鲁木齐香港游 乌鲁木齐香港游 宁波香港旅游 宁波香港旅游 宁波香港旅游