C# MVC开发中在使用ADO.NET数据模型时出现的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# MVC开发中在使用ADO.NET数据模型时出现的问题相关的知识,希望对你有一定的参考价值。

Exception Details: System.InvalidOperationException: The type 'User' is not attributed with EdmEntityTypeAttribute but is contained in an assembly attributed with EdmSchemaAttribute. POCO entities that do not use EdmEntityTypeAttribute cannot be contained in the same assembly as non-POCO entities that use EdmEntityTypeAttribute.

Model.edmx中有一个"Code Generation Strategy"的属性,将其设置为default时会出现以上问题,将其设置为None时,会出现以下的异常:

Message 4 The table/view 'OnlineShop.dbo.LineItem' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view. E:\Project\DotNet\WebSite1\App_Code\Model.edmx 0 1 WebSite1(1)

发上来你的数据定义看看,另外看一下你的T4模版,都要自动生成那些数据框架。

Code Generation Strategy指的是如何处理你的数据模型,设置为None是啥都不做,不会自动生成任何数据类,自然就会出错了。
参考技术A 你已经有了一个User的实体类,现在又要自动生成,所以报错了追问

可是不自动生成的话在引入命名空间时报错啊

追答

把原有的User实体类给删掉再生成

.net core mvc + mysql dbfirst 生成 ado.net 数据模型

1.点击“工具”->“NuGet包管理器”->“程序包管理器控制台” 安装一下包

Install-Package MySql.Data.EntityFrameworkCore -Pre
Install-Package Pomelo.EntityFrameworkCore.MySql
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design

2.在程序包包管理器控制台  执行 命令

Scaffold-DbContext "server=.;userid=tech5_kj;pwd=xxx;port=3306;database=tech5_kj;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force

或者

Scaffold-DbContext "server=.;userid=tech5_kj;pwd=xxx;port=3306;database=tech5_kj;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -UseDatabaseNames -Force

参数说明:

-OutputDir *** 实体文件所存放的文件目录
-ContextDir *** DbContext文件存放的目录
-Context *** DbContext文件名
-Schemas *** 需要生成实体数据的数据表所在的模式
-Tables *** 需要生成实体数据的数据表的集合
-DataAnnotations
-UseDatabaseNames 直接使用数据库中的表名和列名(某些版本不支持)
-Force 强制执行,重写已经存在的实体文件

生成 的 实体类有命名方式和 数据表名大写小 不一致 从 ef 6 迁移的时候改了不少

参考:http://www.cnblogs.com/yangjinwang/p/9516988.html

 

以上是关于C# MVC开发中在使用ADO.NET数据模型时出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 项目中 ADO.NET 实体模型的已打开 DataReader

将 DbDataReader 的结果转换为 ASP.NET MVC 4 中的数据库模型,来自使用 ADO.NET 的存储过程 [重复]

.net core mvc + mysql dbfirst 生成 ado.net 数据模型

ASP.NET MVC 选中ADO.NET 实体数据模型后 点击添加就跳出以下图片,求大神帮帮忙!!!谢谢

具有 LINQ 关联的 C# 和 ADO .NET 实体数据模型以及同一表的实体

MVC - 两个模型绑定到同一视图的转换问题