Tag: entity framework 4

检测到entity framework自我引用循环

我有一个奇怪的错误。 我正在尝试.NET 4.5 Web API,entity framework和MS SQL Server。 我已经创build了数据库并设置了正确的主键和外键。 我创build了一个.edmx模型,并导入了两个表:Employee和Department。 一个部门可以有很多员工,这种关系是存在的。 我使用脚手架选项创build了一个名为EmployeeController的新控制器,以使用Entity Framework创build具有读取/写入操作的API控制器。 在向导中,selectEmployee作为模型,并为数据上下文提供正确的实体。 所创build的方法如下所示: public IEnumerable<Employee> GetEmployees() { var employees = db.Employees.Include(e => e.Department); return employees.AsEnumerable(); } 当我通过/ api / Employee调用我的API时,出现以下错误: “ObjectContent`1”types未能序列化内容types为“application / json; … System.InvalidOperationException“,”StackTrace“:null,”InnerException“:{”Message“:”发生了错误“,”ExceptionMessage“:”检测到types为“System.Data.Entity.DynamicProxies .Employee_5D80AD978BC68A1D8BD675852F94E8B550F4CB150ADB8649E8998B7F95422552' 。 Path'[0] .Department.Employees'。“,”ExceptionType“:”Newtonsoft.Json.JsonSerializationException“,”StackTrace“:”… 为什么它是自引用[0]。部门雇员? 这并没有太多的意义。 我希望这发生,如果我有我的数据库中循环引用,但这是一个非常简单的例子。 有什么可能会出错?

使用entity framework与SQL Compact专用安装

我正在使用SQL Compact在桌面应用程序中使用entity framework4。 我想在我的应用程序中使用SQL Compact的私有安装 ,这样我的安装程序就可以安装SQL Compact,而不需要用户进行第二次安装。 它也避免了版本控制的麻烦。 我的开发机器安装了SQL Compact 3.5 SP1作为公共安装,所以我的应用程序在那里运行良好,正如人们所期望的那样。 但是它没有在我的testing机器上运行,没有安装SQL Compact。 我得到这个错误: The specified store provider cannot be found in the configuration, or is not valid. 我知道有些人在使用SQL Compact私有安装方面遇到困难,但是我已经使用了一段时间了 ,而且我非常喜欢它们。 不幸的是,我的常规私人安装方法不起作用。 我检查了我的SQL CE文件上的版本号,它们都是SP2版本的3.8.8078.0。 以下是我在私人安装中包含的文件: sqlcecompact35.dll sqlceer35EN.dll sqlceme35.dll sqlceqp35.dll sqlcese35.dll System.Data.SqlServerCe.dll System.Data.SqlServerCe.Entity.dll 我已将System.Data.SqlServerCe的引用添加到我的项目中,并且已validation上面列出的所有文件都被复制到安装机器上的应用程序文件夹中。 这里是我打开SQL Compact文件时用来configurationEntityConnectionStringBuilder的代码: var sqlCompactConnectionString = string.Format("Data Source={0}", filePath); // Set Builder […]

使用entity framework的最有效的自引用树的方法

所以我有一个基本上是一个SQL表 ID, ParentID, MenuName, [Lineage, Depth] 最后两列是自动计算的,以帮助search,所以我们现在可以忽略它们。 我正在创build一个包含多个类别的下拉菜单系统。 不幸的是,我不认为自我引用表超过1级深。 所以我剩下几个选项 1)创build查询,按深度sorting,然后在C#中创build一个自定义类,一次填充一个深度。 2)find一些方法来急切地加载EF中的数据,我不认为这是可能的无限的水平,只有一个固定的金额。 3)我还没有确定的其他方式。 任何投入都会受到欢迎!

在Entity Framework 4.0中批量处理数据库命令

我目前的项目需要每天与外部系统同步。 同步基于复杂的导入文件结构,通过广泛的业务逻辑进行分析和处理。 由于业务逻辑的原因,我们决定使用.NET代码,并重用现有的BL组件,而不是在存储过程或集成服务中写入相同的逻辑。 BL层位于EF 4.0数据访问层之上。 当前实现处理导入批处理,将所有更改填充到ObjectContext中并在事务中执行SaveChanges。 当我检查SQL分析器时,我看到EF执行每个实体更改作为单个SQL命令(具有自己的往返数据库)。 而且看起来这些命令是完全按顺序执行的。 所以我有多达100.000往返数据库的初始导入和10.000 – 50.000往返数据库日常同步。 EF本身或某些供应商/扩展可能批量插入/更新/删除命令?

entity framework中的唯一键4

现有的数据库模式具有唯一的非主键和一些依赖它们的外键。 在Entity Framework v4中是否可以定义唯一的不是主键的键? 怎么样?

插入到表中时发生错误,而不是从实体数据框架中触发

我正在使用entity framework4,插入一个新的logging使用entity framework,而不是插入触发器,而有一个标识列的表,而不是触发器用于修改插入的值之一,根据某些逻辑,entity framework引发exception“存储更新,插入或删除语句影响了意外数量的行(0)。实体可能已被修改或删除,因为实体被加载。刷新ObjectStateManager条目”。 任何人都可以帮助解决这个exception吗?

如何刷新DbContext

我想刷新我的DbContext所有实体而不重新创build它,我尝试了以下,没有一个是合理的: var context = ((IObjectContextAdapter)myDbContext).ObjectContext; var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries( EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); context.Refresh(RefreshMode.StoreWins, refreshableObjects); //…………………………………………………………….. foreach (var entry in this.Orm.ChangeTracker.Entries()) { entry.State = EntityState.Unchanged; } this.Orm.ChangeTracker.DetectChanges(); 唯一一个刷新我的DbContext : foreach (var i in this.Orm.ChangeTracker.Entries()) i.Reload(); 但是太慢了。 你能帮我select正确的方法吗?

使用MySqlentity framework4和Code-First Development CTP

我以为我会用Scott Guthrie在Entity Framework 4的代码优先的开发中的最新post进行实验。而不是使用Sql Server,我试图使用MySql。 这里是我的web.config(这是一个Asp.Net MVC 2应用程序)的相关部分: <connectionStrings> <add name="NerdDinners" connectionString="Server=localhost; Database=NerdDinners; Uid=root; Pwd=;" providerName="MySql.Data.MySqlClient"/> </connectionStrings> <system.data> <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data> 就像教程,我期待EF4自动生成我的数据库。 相反,它会抛出一个ProviderIncompatibleException,内部exception抱怨NerdDinners数据库不存在。 很公平; 我去为它创buildMySql数据库,只是为了看看事情是否会起作用,并得到另一个ProviderIncompatibleException。 这一次,“DatabaseExists不被提供者支持”。 我承认,这是我第一次深入研究Entity Framework(我大部分都是Linq to Sql),而这些都是在上周发布的Code-First CTP上运行的。 这就是说,我在这里做错了什么,或者是一个可以解决的已知问题?

entity framework4 / POCO – 从哪里开始?

我已经编程了一段时间,之前已经使用了LINQ-to-SQL和LINQ-to-Entities(尽pipe在使用实体时它已经处于Entity / Table 1-1关系 – 即与L2SQL没什么区别) 我一直在大量阅读有关控制反转,工作单元,POCO和存储库模式的信息,并希望在我的新应用程序中使用这种方法。 在那里我正在努力find一个清晰,简洁的EF4初学者指南,不会假定EF1的知识。 我需要回答的具体问题是: 首先代码/模型? 关于EF4的优点/缺点(例如,如果我先做代码,在以后更改代码并需要重新生成我的数据库模型会发生什么情况 – 数据是否会保留并转换或丢失? 假设我要去代码优先(我想看看EF4如何将其转换为数据库模式),我怎么才能真正开始? 很多时候我已经看到有实体图的文章,声明“所以这是我的实体模型,现在我要…” – 不幸的是,我不清楚他们是否在devise器中创build模型,将它保存到生成代码,然后停止任何进一步的自动代码生成 – 或者 – 他们已经编码(POCO)? 类,并以某种方式将它们导入deisgner视图? 我想我真正需要的是理解“魔法”来自何处以及如何直接从数据库生成EF模型。 我知道这个问题有点含糊,但我不知道我不知道 – 所以任何input/更正/澄清赞赏。 不用说,我不希望任何人坐在这里教我EF – 我只是喜欢一些很好的教程/论坛/博客/等。 为完整的实体新手

EF4 Code First:如何在不添加导航属性的情况下添加关系

我应该如何使用Code First定义关系,但不使用任何导航属性? 以前,我通过在关系的两端使用导航属性定义了“一对多”和“多对多”。 并在数据库中创build适当的关系。 这里是一个类的样子的简化版本(为了简单起见,我把多关系转换为一对多关系)。 public class User { public string UserId { get; set; } public string PasswordHash { get; set; } public bool IsDisabled { get; set; } public DateTime AccessExpiryDate { get; set; } public bool MustChangePassword { get; set; } public virtual Role Role { get; set; } } public class […]