首页 新闻 赞助 找找看

关于Entity Framework使用现有数据库的问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-09-03 13:11

背景:

  通过EF,操作现有数据库的数据

  但是已有的数据库的表名命名,貌似与EF默认规则不太一样

例子:

  

public class EFDbContext:DbContext
{
public EFDbContext() : base("name=EFContext") { }
static EFDbContext() {

  //EF不修改数据库
  Database.SetInitializer<EFDbContext>(null);
}

public DbSet<Employee> Emplo_info { get; set; }

 

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//取消负数表名惯例
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
}

}

~~~~~~~~~~~~~~

可以看到

public DbSet<Employee> Emplo_info { get; set; }

属性名设置的是Emplo_info,这是与数据库表名一致的

但是在运行时,这样的错误

  :System.Data.SqlClient.SqlException: 对象名 'dbo.Employee' 无效。

所以我怀疑 EF是否还有一些其他的惯例来管理 表名 与 属性名 之间映射的,改怎么去除

我的目的就是:在不修改现有数据库的前提下,使用EF能有效操作。改怎么办???

问题补充:

Code First

 

~~~~~~~~~~~~~~

我已经找到答案了

在entity定义的类型上加上 注解

[Table("Emplo_info")]

就可以了。不过还是十分感谢 各位的关注

算了的主页 算了 | 初学一级 | 园豆:3
提问于:2014-09-03 12:52
< >
分享
最佳答案
0

我想问下对应CodeFirst的另一个名词好象叫DatabaseFirst吧。不知道中文怎么理解。

收获园豆:10
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-09-03 12:58

EF有三种方式  code first , model first , db first 。 

  db first 是使用现有数据库 生成模型的

  model first 是用设置 生成数据库的

  code first 可以生成数据库,也可以使用现有数据库

  EF我刚学习了几天,主要关注code first 其他两种我也就只知道上面的内容了。

算了 | 园豆:3 (初学一级) | 2014-09-03 13:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册