首页 新闻 搜索 专区 学院

使用MVC3和EF框架后,怎么查询时都会在表名上自动加上S,执行的时候肯定会提示表不存在.怎么解决

0
悬赏园豆:10 [已解决问题] 解决于 2016-11-08 16:45

使用MVC3和EF框架后,怎么查询时都会在表名上自动加上S,执行的时候肯定会提示表不存在.怎么解决

不可能去改数据库.头大.

问题补充:

直接写的类,没有产生 edmx 文件.

duxer的主页 duxer | 初学一级 | 园豆:9
提问于:2011-10-18 16:53
< >
分享
最佳答案
0

EF6写法:

引入命名空间:

using System.Data.Entity;
using System.ComponentModel.DataAnnotations;
using System.Data.Common;
using System.Data.Entity.ModelConfiguration.Conventions;

DBContext类重写方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }

收获园豆:4
勇哥哥 | 初学一级 |园豆:6 | 2014-09-18 09:31
其他回答(7)
0

你写的代码有问题。我没发现会自动加上S啦。

LCM | 园豆:6876 (大侠五级) | 2011-10-18 17:04
0

我记得edmx属性里面好象有个设置复数的

rad | 园豆:28 (初学一级) | 2011-10-18 17:05
1

是Code First不?

dotNetDR_ | 园豆:2058 (老鸟四级) | 2011-10-18 22:19
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Example
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.ComponentModel.DataAnnotations;

public partial class ExampleDbContext : DbContext
{
public AssessmentSysDbContext()
: base("name=ConnStringKey")
{
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// TODO: 在这里写Fluent API
#region 公约
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
#endregion

//....

modelBuilder.Entity<Vote>()
.Ignore(v => v.IsSelected);


#endregion
}

//....
}
}
支持(0) 反对(0) dotNetDR_ | 园豆:2058 (老鸟四级) | 2011-10-18 22:26
0

考虑用EdmGen2命令直接生成 edmx文件,EdmGen2 /ModelGen "DATA SOURCE=ORAFH;PERSIST SECURITY INFO=True;USER ID=FHOPE;PASSWORD=fhope" "Oracle.DataAccess.Client" "TeleMed"

收获园豆:2
birchlee | 园豆:105 (初学一级) | 2011-10-21 11:54
0

在Model里的class上面加[Table("Test")],一句话解决才是王道

收获园豆:4
varvery | 园豆:206 (菜鸟二级) | 2012-06-27 22:11
0

和楼主说的一样,并没有生成demx,直接是代码,我也有这个现象,在Class上面加 tablename也不行!!!怎么解决?

Dodu.Net | 园豆:204 (菜鸟二级) | 2012-07-04 17:53
0

直接在Model里的class上面加[Table("表名")]

魔多 | 园豆:1031 (小虾三级) | 2013-12-20 11:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册