问题标签 [ef-model-first]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
286 浏览

visual-studio-2012 - 非 Windows 8 机器上的 Visual Studio 2012 和 EF5 开发

我正在尝试在工作中创建一个 EF5 Model First 项目。

在我创建模型并单击从模型生成数据库后,起初它并没有创建背后的代码。稍微看了一下,我发现代码生成策略设置为无。我将其设置为默认值(想知道为什么没有默认值,而不是默认值)并重新生成数据库。

现在它确实创建了代码,但它不会编译。错误读取 - 部分声明不得指定不同的基类。只有这个错误出现在生成的代码中,在容器类中。

我还注意到 SQLce 文件没有突出显示,并且右键菜单上没有执行脚本选项,根据http://msdn.microsoft.com/en-us/data/jj205424.aspx上的视频,Wich应该。

有谁知道如何解决这些问题?

更新:所以我在 Win8 机器上安装了 VS2012,这是正确的 - 回到我原来的机器(Win7)我卸载并再次安装,问题仍然存在。我想这是 Win7 的某种限制 - 就像 Win7 上没有 win8 应用程序开发一样。

但与 Win8 Apps 不同,应该没有理由不能在 Win7 上开发 DB 应用程序,所以我的问题应该改写为:我可以安装一些东西来使用针对 VS2012 的完整 DB 工具吗?赢7?

0 投票
1 回答
2956 浏览

entity-framework - EntityFramework 模型一、外键合成主键

我有一个 Entity Framework 5 Model First 项目,包含以下表格:

将上述表和关联设置为 UserExtensionMap 时,我收到 UserId 和 ExtensionId 未映射的错误。

所以我右键单击 UserExtensionMap 表并选择表映射并得到以下屏幕 映射

我可以设置地图Users.Id to UserExtensionUser.IdExtensions.Id to UserExtension.ExtensionId但没有任何东西可以将 Extensions.Number 和 User.Username 映射到 - 我很困惑!

尝试编译时出现错误:

Error 3024: Problem in mapping fragments starting at line 119:Must specify mapping for all key properties (UserExtensionMaps.ExtensionId, UserExtensionMaps.UserId) of the EntitySet UserExtensionMaps.

当我为 UserExtensionMap 删除上述这些地图时,我收到错误消息:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - UserExtensionMaps.

我的模型 XML 文件如下:

0 投票
2 回答
35106 浏览

c# - EntitySet System.InvalidOperationException - “实体类型不是当前上下文模型的一部分”

类似问题

实体类型 <classname> 不是当前上下文模型的一部分- 和 - EF 4.1 Code First 错误 - 实体类型 SomeType 不是当前上下文模型的一部分是类似的问题,但它们是“代码优先”的观点仅使用更简单的数据模型,并解决连接字符串和映射问题。请仔细看看这个。

症状

Drinks检索集合时引发异常:

代码

是的,我知道在现实世界中,肉类和蔬菜与膳食之间的关系可能是多对多的,但不要在这里纠结。

我的经验是使用 Model First 方法。EDMX 文件是在 POCO 之后构建的。

连接字符串中是映射到已解析 EDMX 资源 ( metadata=res://*/Models.MealsModels.csdl|res://*/Models.MealsModels.ssdl|res://*/Models.MealsModels.msl;) 的元数据部分。

我检查了 EDMX 文件的底层 XML,显示了概念模型和存储模型中存在的所有实体,并且所有实体都已完全映射。怎么回事?

故障排除

第一次尝试是完全摆脱存储和映射 EDMX 数据(SSDLMSL部分)。开火,现在有两个例外:

  1. 检索Meals投掷MSL, error 2062 No mapping specified for instance of the EntitySet and AssociationSet in the EntityContainer

  2. 检索Drinks继续抛出The entity type Drinkis not part of the model for the current context

引发的错误Meals是意料之中的,我对映射和存储模型进行了核对 - 检查_db表明Meals-> InternalSet->EntitySet属性是正确的,只是没有映射。

引发的错误Drinks是我卡住的地方。仔细检查_db我发现Drinks-> InternalSet->EntitySet抛出SystemInvalidOperation异常,指出实体不在模型上下文中。

以下是 EDMX 的 CSDL 在 XML 格式中的样子:

问题

如果DbContext具有所有DbSet属性并且正在使用一个连接字符串,其中包含一个模型的元数据,该模型的 CSDL 正确定义了实体类型Drink为什么它不是上下文的一部分?

我能看到的唯一不同Drink的是它与任何其他实体都没有关系,也没有关联......

0 投票
1 回答
4234 浏览

entity-framework-5 - Code First 代码生成尝试创建模型?

迁移到 Entity Framework 5,首先是模型(由于数据库很复杂并且需要单独维护)。使用新的 DbContext 代码生成器导入数据库。

当我手动生成连接时生成并触发 - 我必须这样做(我们的连接设置在单独的配置文件中)。

消息内容如下:

如果在 Code First 模式下使用,使用用于 Database First 和 Model First 开发的 T4 模板生成的代码可能无法正常工作。要继续使用 Database First 或 Model First,请确保在执行应用程序的配置文件中指定了实体框架连接字符串。要使用从 Database First 或 Model First 生成的这些类,使用 Code First 添加使用属性或 DbModelBuilder API 的任何其他配置,然后删除引发此异常的代码。

什么?

我怎么能压制这个?我不希望实体框架对数据库模式做任何事情,但显然我希望能够使用数据库。

0 投票
1 回答
415 浏览

entity-framework-5 - 在实体框架中更改关系的状态

我的问题与这个直接相关。

接受的答案是“您还必须更改关系的状态”。

我使用模型优先方法,并且我的实体中没有外键。我只有导航属性。

我可以通过 更改实体的状态DbEntityEntry,但我不知道如何更改关系本身的状态。我怎样才能访问它?

我的代码示例:

Adress这段代码没有错误地通过,但是和之间的关系State永远不会更新。Name建筑物和Street物业的情况确实如此。

0 投票
1 回答
268 浏览

entity-framework - 如何在实体框架模型优先设计器中将字段设置为索引

这在过去被问了很多,我知道在 EDMX 设计器中没有直接支持将字段设置为索引,但是由于 Visual Studio 2012 已经发布并且 Entity Framework 5 发布,它现在可能支持编辑设计器中的索引选项(没有理由不支持它),我查看了字段的属性,我能找到的只是将字段设置为实体键,但这并不能解决我的问题(我已经有一个实体键,出于性能原因,我只想在其他一些字段上创建索引)。

如何在 EDMX 设计器中将字段设置为索引列?(我知道如何在通过 SQL 查询之后执行此操作,但我需要一种更加模块化的方法,因为我将编辑数据库并重新创建它,而且我很可能会忘记每次通过 SQL 查询添加索引)。

谢谢,坎。

0 投票
1 回答
8846 浏览

entity-framework - 实体类型不是当前上下文模型的一部分

这是模型优先的方法。我已经对此进行了广泛的研究,但没有提出答案。我已经尝试了以下链接中的所有建议:

这似乎是同样的问题,但没有解决 实体类型 <classname> 不是当前上下文模型的一部分

这些是我已经研究过的链接,所以请不要回答为 ---- EF 4.1 Code First 错误的重复 - 实体类型 SomeType 不是当前上下文 的模型的一部分实体类型不是模型的一部分, 英法 5

这是 EDMX(为简洁起见):

存储库代码:

数据库上下文代码:

还有2个类文件:

工单标头:

公司标题:

单元测试代码:

我试图解决这个问题的事情:

1) 检查数据库 - 两个查询都正确返回数据。从 vwWorkOrderHeader 中选择 * 从 vwCompanyHeader 中选择 *

2) 从 EDMX 中删除 WorkOrderHeader 然后从数据库中重新创建它。

3) MOQed 了 DBContext 以确保它不是服务查询在做一些有趣的事情。这正确地返回了对象,因此这意味着它是上下文级别或更低级别的东西。

4) 逐步完成这两个测试,以确保它们使用相同的构建上下文的方法 - Thy do。

4) 逐步完成这两个测试,以确保它们使用相同的方法来构建存储库 - 你这样做。

5)唯一的区别是在DatabaseContext的以下功能期间:

WorkOrderHeader 代码在 MyBase.Set(Of T)() 的手表中具有以下内容

CompanyHeader 代码在 MyBase.Set(Of T)() 的手表中具有以下内容

我对此完全不知所措,并且正在进入解决同一问题的第三天。我希望对这个问题有一些新的看法可能会看到我犯的错误,或者指出我没有想到的测试问题的方向。

更新:

我删除了服务代码以确保它在 DBContext 中。我已将服务从等式中分离出来,以便仅使用存储库并且它们都使用相同的 DatabaseContext,因此它与连接字符串无关。我验证了模型浏览器中 Insight_Model/EntityContainer:Insight_Entities/Entity Sets/WorkOrderHeaders 下存在,并且 Insight_Model/Entity Types/WorkOrderHeader 下存在。似乎 DatabaseContext 甚至没有尝试查询实体集的概念模型。

0 投票
1 回答
4592 浏览

entity-framework - 首先在实体框架模型中将文档添加到生成的代码中

自 VS 2010 以来,我一直在使用实体框架模型。当我构建我的项目时,EF 会生成一个包含所有实体的 Model.Designer.cs 文件。此设计器文件还包含添加到 EDMX 文件中的实体的文档。

当我在 VS 2012 中创建一个新的 EF 模型第一个项目时,一个 Model.tt 文件被添加到我的 EDMX 文件中。此 T4 模板为我的模型中的每个实体生成一个文件。不幸的是,生成的代码中没有使用 EDMX 文件中的文档。

我真的很喜欢记录我的模型,以便在使用它时显示 IntelliSense。到目前为止,我发现的唯一解决方法是删除 Model.tt 和生成的类文件,然后重新打开我的 EDMX 文件上的代码生成。这将恢复到我在 VS 2010 中使用的行为。但是,我希望每个实体都有一个单独的文件。

有什么方法(最好使用 VS 工具,而无需修改 VS 附带的任何文件)将 EDMX 文件中的文档包含在生成的单个类文件中?

编辑:为了进一步说明我的问题,这里有一个简单的例子。

假设我的模型如下所示:简单实体框架模型

我在 Id 属性的“属性”窗口中突出显示了我输入文档的部分。

这是实体在 EDMX 文件中的样子:

Model.tt 生成的类(Entity1.cs)如下所示:

但是当我为我的模型打开代码生成时,这就是 Model.Designer.cs 中实体的样子:

所以您会看到:Model.Designer.cs 包含我的自定义文档字符串“这是 ID 属性的文档”。而 Entity1.cs 没有。但是,如果有很多实体,Model.Designer.cs 会变得很大,并且调试到这个文件有点慢。我更喜欢有几个小文件(每个实体一个),但仍然在生成的代码中保留来自 EDMX 文件的文档。

0 投票
1 回答
752 浏览

entity-framework-5 - 如何首先使用实体​​框架 5 模型为每个层次结构生成表

我首先使用带有实体框架 5 模型的 Visual Studio 2012。我想使用每个层次结构策略的表来生成我的数据库,但找不到该选项。Entity Designer Database Generation Power Pack 不适用于 Visual Studio 2012,或者我找不到它。

有人建议吗?

0 投票
1 回答
385 浏览

c# - EF Model First 的 1:1 关系问题

我正在尝试使用 EF 将应用程序开发为 Model-First。我尝试了一切来完成表格拆分模式和 1:1 关系,但看起来 EF 不允许我这样做。

假设我确实使用了 Model-First - 有没有办法建立 1:1 的关系而不会弄乱生成的文件,而 EF 会让人讨厌:

多重性在关系“Blabalbala”中的角色“Blablalah”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是*。

我已经尝试将我的 FK 设置为目标表上的主键,但仍然没有帮助。