今天使用了一下手写EntityFramework,发现一些常见的问题,做个记录:

1、以前使用模板生成不太在意的问题,就是在定义实体类时,如果没映射注释,自动映射的表名会变成复数形式

如:表名==>表名s

这样就会报找不到表的异常,因为确实没这个加了复数的表名

解决方法:

1) 重写自动映射的方法:

using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions; namespace Linq2Mysql
{
public class MyContext : DbContext
{
public MyContext()
: base("name=MyContext")//web.config中connectionstring的名字
{
} public DbSet<article> Article { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}

  

  

2) 添加映射表名注释

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; namespace Linq2Mysql
{
[Table("article")]
public class article
{
[Key]
public int aid { get; set; }
public string title { get; set; }
public string content { get; set; }
public DateTime create_time { get; set; }
public DateTime update_time { get; set; }
public string author { get; set; }
public string sub_title { get; set; }
public string editor { get; set; }
public int status { get; set; }
public int type_id { get; set; }
public string picture_small { get; set; }
public string sumary { get; set; }
}
}

  

参考地址:https://blog.csdn.net/bensidiyu/article/details/46742329

2、在定义实体时,要添加关键字段注释,要不会报key未定义异常

EntityType 'aritcle' has no key defined. Define the key for this EntityType.

 [Key]
public int aid { get; set; }

仅此做个记录,后面如果有使用问题会再做补充。

Entity Framework表名默认自动变为复数形式等常见问题解决方法的更多相关文章

  1. 解决windows下MySQL表名大写自动变小写的问题

    解决windows下MySQL表名大写自动变小写的问题   有些人可能会遇到在windows下,表名不能用大写字母, 即使使用了大写字母的建表语句,还是会被自动转成小写.   解决方法:  打开 My ...

  2. SQL表名,应该用表对应资源对象的复数形式还是单数形式

    原文:http://blog.csdn.net/lizeyang 问题 SQL表名,应该用表对应资源对象的复数形式还是单数形式.例如一个用户表,表名是用user还是users更合适呢?   精华回答 ...

  3. 扩展entity framework core 实现默认字符串长度,decimal精度,entity自动注册和配置

    报道越短,事情越严重!文章越短,内容越精悍! 文章以efcore 2.0.0-preview2.测试验证通过.其他版本不保证使用,但是思路不会差太远.源代码 目标: 1.实现entity的自动发现和m ...

  4. Entity Framework表拆分

    一.概念 表拆分:一个表拆分成多个实体,例如Photograph表,可以拆分为Photograph和PhotographFullImage两张表. Photograph实体结构: using Syst ...

  5. SQL表名,应该用复数还是单数

    用单数形式更佳,理由如下: 1.概念直观. 你有一个袋子,里面有好多个苹果,你会说这是个苹果袋.但无论里面有0,1,百万个苹果,它依然是个袋子.表也是如此,表明需要描述清楚,表里面包含的对象,而非有多 ...

  6. mysql 表名默认 windows不区分大小写 在linux区分大小写

    MySQL在Linux下数据库名.表名.列名.别名大小写规则:  1.数据库名与表名是严格区分大小写 2.表的别名是严格区分大小写 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格 ...

  7. windows下mysql表名不自动转换小写配置

    mysql5.6版本配置文件有两个 1.默认的配置在program files/MySQL/MySQL Server 5.6/my-default.ini 2.一个在programData/MySQL ...

  8. linux中mysql表名默认区分大小写导致表找不到的问题

    天将window的项目迁移到linux上面,然后登录时一直报用户表找不到的错误信息. 检查发现数据库中的表名是m_user, 后来才想起来是大小写问题, 找到问题原因,解决方案如下: 修改/etc/m ...

  9. Entity Framework 之Code First自动数据迁移

    using MvcShopping.Migrations; using MvcShopping.Models; using System; using System.Collections.Gener ...

随机推荐

  1. Word2vec资料

    Word2vec 很好的资料 Word2Vec-知其然知其所以然   https://www.zybuluo.com/Dounm/note/591752 Word2Vec数学原理讲解 http://w ...

  2. 解决windows系统下打开应用弹出丢失libmysql.dll的问题

    只要把下载libmysql.dll,放到exe应用程序的所在目录,就可以运行,libmysql.dll有32位和64位版本,可以分别测试一下行不行,如果不行在换一个 版本试试.libmysql.dll ...

  3. 测试 code style

    c++ #include <iostream> int main(int argc, char *argv[]) { /* An annoying "Hello World&qu ...

  4. 转 Spring Security 简介

    https://blog.csdn.net/xlecho/article/details/80026527 Spring Security 简介 2018年04月21日 09:53:02 阅读数:13 ...

  5. (70)zabbix telnet监控类型

    概述 zabbix监控的方式很多,例如前面讲到的agent.snmp以及后续后续要讲到ssh和今天要讲到的telnet.流程很简单,创建item-->配置ip.用户.密码.端口.脚本->z ...

  6. 如何用纯 CSS 创作一颗逼真的土星

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/EpbaQX 可交互视频 ...

  7. MySQL中 IFNULL、NULLIF和ISNULL函数的用法

    mysql 中 ifnull().nullif().isnull()函数的用法讲解: 一.IFNULL(expr1,expr2)用法: 假如expr1不为NULL,则 IFNULL() 的返回值为ex ...

  8. Python3学习了解日记

    # 单行注释 ''' 多行注释 ''' """ 这个也是多行注释 """ ''' 声明变量 Python 中的变量不需要声明.每个变量在使用 ...

  9. 使用IAR在开发nordic问题记录

    使用IAR在开发nordic的sdk的时候,官方有一段话*****Note for IAR 8 users:(Libraries for IAR 8 require wchar_t to be of ...

  10. hdu-1338 game predictions(贪心题)

    Suppose there are M people, including you, playing a special card game. At the beginning, each playe ...