正在查看: Entity Framework 分类下的文章(第 1 页 / 共 5 篇)

Entity Framework 的一次迁移记录

Migration已经变成通用的做法,laravel框架也有这个东西。今天我对已经存在的网站增加了一些model,但是以前也没怎么用Migration。使用时遇到一些问题,记录一下。

1. 对于已经存在的数据库,如有_MigrationHistory表,先将它删掉。

2. 在VS里执行第一个迁移命令: Enable-Migrations -Force  将生成Migration文件夹和一个Migration类。

3. 执行Add-Migration InitialCreate –IgnoreChanges  产生一个空基架,其中-IgnorceChanges是关键。

»阅读全文

Entity Framework 迁移的使用场景

EF拥有迁移功能,虽然很强大,但还是需要明白这一个功能的目的和使用场景。一般情况下,当你是用Code First时,Migrations就很有必要了。例如,你在生产环境中,经常更新Poco对象,而初始化器使用的是DropCreateDatabaseAlways或者DropCreateDatabaseIfModelChanges,那么你的数据库中总是处于初始化状态,如果想保留一部分数据,很遗憾,当部署到产品环境中时数据将会丢失。我们希望即使在产品环境下,以前保存的数据不会被丢失。简单地说:

»阅读全文

EF错误描述集

Poco对象生成的数据表自动添加了外键列

设计Poco对象时给UerProfile添加了一个集合属性: 

public class UserProfile
{
    public UserProfile()
    {
        this.Departments = new List<Department>(2);
    }
    public IList<Department> Departments{get;set;}
  }

这个Departments并不想加入EF字段管理中,虽然已经在DbModelBuilder中移除了所有的惯例,但是还是自动被EF在Departments表中添加了一个UserProfile_ID字段。解决方式是:使用Ignore方法移除掉Departments集合属性即可。

"Cannot drop database "MiniOA" because it is currently in use."

出现以上错误的触发条件是:

»阅读全文

使用EF创建LocalDb时遇到的一些问题

EF在本地使用localDb创建数据库时,如果同步git到服务器会出现App_Data下的mdf和ldf文件不可写的问题,原因是本地的localdb服务没有关闭,可以使用:

sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0

关闭和删除数据库,再同步就没有问题了。

另外在调试时可能会出现“EF5: Cannot attach the file ‘{0}' as database '{1}'”之类的问题,你可以简单地做两个操作:一是把App_Data下的数据库文件删除了,如果还不起作用,再使用上面的两个命令给干掉。

Entity Framework的关系配置

实体类映射中,关系的映射配置在关系的两端都可以配置。例如,用户信息与登录信息的 一对多 关系可以在用户信息端配置:

HasMany(m => m.LoginLogs).WithRequired(n => n.Member);

等效于在登录日志信息端配置:

HasRequired(m => m.Member).WithMany(n => n.LoginLogs);

但是,如果所有的关系映射都在作为主体的用户信息端进行配置,势必造成用户信息端配置的臃肿与职责不明。所以,为了保持各个实体类型的职责单一,实体关系推荐在关系的非主体端进行映射

»阅读全文