- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MVC4 应用程序的某个页面上收到此错误
The type 'Group' 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.
前一分钟还工作正常,下一分钟这个错误就出现了并且不会消失。我没有更改与上下文模型相关的任何内容。如果我回滚所有其他代码更改,错误仍然存在。
我已经看过this post,它处理类似的错误。不过我自始至终都在使用 DbContext。该修复对我不起作用。
我尝试过重新生成类,甚至删除并重新创建 .edmx,但没有任何效果。
这是非工作类之一的部分代码
表(从 SQL Server 提升的 SQL 创建语句):
CREATE TABLE [dbo].[Groups](
[group_id] [int] IDENTITY(1,1) NOT NULL,
[user_id] [uniqueidentifier] NULL,
[parent_group_id] [int] NULL,
[group_type] [tinyint] NULL,
[group_name] [nvarchar](50) NULL,
[date_created] [smalldatetime] NULL,
[date_accessed] [smalldatetime] NULL,
[date_modified] [smalldatetime] NULL,
[date_deleted] [smalldatetime] NULL,
[n_total_contacts] [int] NULL,
[n_unsubscribed] [int] NULL,
[n_excluded] [int] NULL,
CONSTRAINT [PK_Group] PRIMARY KEY CLUSTERED
(
[group_id] ASC
)
WITH
(
PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
)
ON [PRIMARY]
)
ON [PRIMARY]
自动生成的上下文类:
namespace MyProject
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Linq;
public partial class MyDbContext : DbContext
{
public MyDbContext () : base("name=MyDbContext ")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Group> Groups { get; set; }
}
}
自动生成的 Group.cs 类:
namespace MyProject
{
using System;
using System.Collections.Generic;
public partial class Group
{
public int group_id { get; set; }
public Nullable<System.Guid> user_id { get; set; }
public Nullable<int> parent_group_id { get; set; }
public Nullable<byte> group_type { get; set; }
public string group_name { get; set; }
public Nullable<System.DateTime> date_created { get; set; }
public Nullable<System.DateTime> date_accessed { get; set; }
public Nullable<System.DateTime> date_modified { get; set; }
public Nullable<System.DateTime> date_deleted { get; set; }
public Nullable<int> n_total_contacts { get; set; }
public Nullable<int> n_unsubscribed { get; set; }
public Nullable<int> n_excluded { get; set; }
}
}
View 模型:
public class GroupsListModel
{
public List<Group> Groups { get; set; }
}
View :
public ActionResult List()
{
GroupsListModel model = new GroupsListModel();
using (MyDbContext db = new MyDbContext())
{
model.Groups = db.Groups.ToList();
}
return View(model);
}
再次,我想补充一点,这一切在 15 分钟前都有效。我在 View 中更改了几行,这导致了此错误,当我将其改回时,错误仍然存在。
**更新:**
我已经接受了@Pawel 下面的回答,因为它解决了最初的问题,但我只是想分享有关完整解决方案的更多信息
在这个项目中,我连接到两台服务器,其中一台运行 Sql Server 2005,另一台运行 Sql Server 2008。删除 EdmSchemaAttribute 后,我收到一个新错误:
所有 SSDL 工件必须针对同一提供者。 ProviderManifestToken '2008' 与之前遇到的 '2005' 不同。
我在 google 上搜索并发现建议我应该编辑 2005 .edmx 文件并将 2005 更改为 2008。这导致了一个新错误:正在使用的 SQL Server 版本不支持数据类型“datetime2”
事实证明,我的 SQL Server 2008 DB 中的一个 datetime
列实际上是一个 date
列。对于其他一切,这没有什么区别,但 date
映射到 EF 中的 datetime2
,这导致 2005 架构出现问题。我相信这可能是问题的根本原因。
我使用的解决方案是编辑 2008 年 .edmx 文件,将 2008 年更改为 2005 年,并将日期
字段更改为日期时间
。此后该项目编译并运行没有问题。
最佳答案
在 EF 支持 POCO 实体之前,它仅支持非 POCO 实体。非 POCO 实体派生自 EntityObject 类,每个实体、复杂类型、枚举类型、成员等都必须具有 EF 特定属性,否则它们将无法工作。非 POCO 实体所在的程序集必须使用 EdmSchemaAttribute
进行归因。如果程序集具有此属性,EF 就知道它包含非 POCO 属性,并且仅查找这些属性。 POCO 和非 POCO 类型不能存在于同一程序集中。在您的情况下,您似乎在项目中的某处定义了 EdmSchemaAttribute
(请注意,这是一个程序集级别属性,因此它基本上可以存在于任何文件中)。如果您只想使用 POCO 类型,只需找到该属性并将其删除。如果要混合 POCO 和非 POCO 类型,则需要在与定义非 POCO 类型不同的程序集中定义 POCO 类型(不过,我不建议混合 POCO 和非 POCO 类型)。请注意,在 EF 设计器中,非 POCO 类型曾经是 VS2010 中的默认选择(基于 EntityObject 的实体和基于 ObjectContext 的上下文)。在 VS2012 附带的设计器中,默认上下文是 DbContext,但您仍然可以将代码生成策略更改为“默认”(有趣的是,创建基于 DbContext 的上下文和 POCO 实体的默认代码生成策略称为“无”)。如果您这样做,那么为模型生成的代码将添加 EdmSchemAttribute
。在 VS2013(和 OOB version for VS2012 )中,如果您的目标是 EF6,您将无法选择代码生成策略(一切都是基于 T4 的 - 如果您确实需要 ObjectContext,您应该能够在 VS Gallery 上找到模板)。如果您的目标是 EF5,那么您将能够选择生成非 POCO 内容的策略,但我认为这称为 Legacy ObjectContext 之类的东西,而不是 T4,即 DbContext 和 friend 。
关于c# - 该类型不具有 EdmEntityTypeAttribute 属性,但包含在具有 EdmSchemaAttribute 属性的程序集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19544971/
我有一个类似于以下的结构。 class A { string title; List bItem; } class B { int pric
本地流 和 远程流 两者都是“媒体流列表 ”。 本地流 包含“本地媒体流 ” 对象 但是,远程流 包含“媒体流 ” 对象 为什么差别这么大? 当我使用“本地流 “- 这个对我有用: localVide
我正在尝试将 8 列虚拟变量转换为 8 级排名的一列。 我试图用这个公式来做到这一点: =IF(OR(A1="1");"1";IF(OR(B1="1");"2";IF(OR(C1="1");"3";I
我正在使用面向对象编程在 Python 中创建一个有点复杂的棋盘游戏的实现。 我的问题是,许多这些对象应该能够与其他对象交互,即使它们不包含在其中。 例如Game是一个对象,其中包含PointTrac
有没有办法获取与 contains 语句匹配的最深元素? 基本上,如果我有嵌套的 div,我想要最后一个元素而不是父元素: Needle $("div:contains('Needle')")
出于某种原因,我无法在 Google 上找到答案!但是使用 SQL contains 函数我怎么能告诉它从字符串的开头开始,即我正在寻找等同于的全文 喜欢 'some_term%'。 我知道我可以使用
我正在尝试创建一个正则表达式来匹配具有 3 个或更多元音的字符串。 我试过这个: [aeiou]{3,} 但它仅在元音按顺序排列时才有效。有什么建议吗? 例如: 塞缪尔 -> 有效 琼 -> 无效 S
嘿所以我遇到了这样的情况,我从数据库中拉回一个客户,并通过包含的方式包含所有案例研究 return (from c in db.Clients.Include("CaseStudies")
如果关键字是子字符串,我无法弄清楚为什么这个函数不返回结果。 const string = 'cake'; const substring = 'cak'; console.log(string.in
我正在尝试将包含特定文本字符串的任何元素更改为红色。在我的示例中,我可以将子元素变为蓝色,但是我编写“替换我”行的方式有些不正确;红色不会发生变化。我注意到“contains”方法通常写为 :cont
我想问一下我是否可以要求/包含一个语法错误的文件,如果不能,则require/include返回一个值,这样我就知道所需/包含的文件存在语法错误并且不能被要求/包含? file.php语法错误 inc
我想为所有包含youtube链接的链接添加一个rel。 这就是我正在使用的东西-但它没有用。有任何想法吗? $('a [href:contains(“youtube.com”)]')。attr('re
我正在尝试在 Elasticsearch 中查询。除搜索中出现“/”外,此功能均正常运行。查询如下所示 GET styling_rules/product_line_filters/_search {
我正在开发名为eBookRepository的ASP.NET MVC应用程序,其中包含在线图书。 电子书具有自己的标题,作者等。因此,现在我正在尝试实现搜索机制。我必须使用Elasticsearch作
我已阅读Firebase Documentation并且不明白什么是 .contains()。 以下是文档中 Firebase 数据库的示例规则: { "rules": { "rooms"
我的问题是我可以给出条件[ 'BookTitleMaster.id' => $xtitid, ] 如下所示 $bbookinfs = $this->BookStockin->BookIssue->fi
我需要能够使用 | 检查模式在他们中。例如,对于像“dtest|test”这样的字符串,像 d*|*t 这样的表达式应该返回 true。 我不是正则表达式英雄,所以我只是尝试了一些事情,例如: Reg
我想创建一个正则表达式来不匹配某些单词... 我的字符:var test = "é123rr;and;ià456;or;456543" 我的正则表达式:test.match(\((?!and)(?!o
我在 XSLT 中有一个名为 variable_name 的变量,如果相关产品具有名称为 A 或 B 或两者均为 A & 的属性,我将尝试将其设置为 1 B.
您好,我想让接待员和经理能够查看工作类型和费率并随后进行更新。但是技术人员只能查看不能更新。该图是否有效? 我读到扩展用例是由发起基本用例的参与者发起的。我应该如何区分技术人员只能启动基本案例而不能启
我是一名优秀的程序员,十分优秀!