Tag: entity framework

EF 4.1 Code First错误 – 实体typesSomeType不是当前上下文的模型的一部分

在使用EF代码的时候,我会在不同的时间给出下面的错误: 实体typesSomeType不是当前上下文模型的一部分。 这个错误的可能原因是什么?

如何在代码中首先删除下划线中的外键字段

我的项目中有多个类(包括TPT)。 每个POCO都有一个BaseClass ,它有一个GUID (称为GlobalKey )作为主键。 首先我使用DataAnnotations来创build正确的外键。 但是,我有问题同步相应的GUID与对象本身。 现在我只想要一个虚拟导航属性,以便数据库中的GUID字段由NamingConvention创build。 但字段名称总是加上一个下划线,后面跟着GlobalKey (这是正确的)。 当我想删除下划线时,我不想通过stream畅API中的所有POCO来执行此操作: // Remove underscore from Navigation-Field modelBuilder.Entity<Person>() .HasOptional(x => x.Address) .WithMany() .Map(a => a.MapKey("AddressGlobalKey")); 任何想法通过覆盖一个约定为所有POCOS做这个? 提前致谢。 安德烈亚斯

EF5迁移更新数据库的脚本错误

我一直在使用Visual Studio 2012 RC与试用许可证没有问题。 我昨天购买了Visual Studio 2012 Professional,安装了最新版本,并安装了Update 1。 我有一个多年来一直在努力的解决scheme/项目。 它有很多的迁移。 我在这个最新版本中运行了我的第一个add-migration TableX_NewField和update-database -sourcemigration:TableX_PreviousNewField 。 他们都跑没有问题。 然后,我运行update-database -script -sourcemigration:TableX_PreviousNewField并收到以下内容: PM> update-database -script -sourcemigration:TableX_PreviousNewField Applying code-based migrations: [201301151003149_TableX_NewField]. Applying code-based migration: 201301151003149_TableX_NewField. System.Runtime.InteropServices.COMException (0x8004000C): User canceled out of save dialog (Exception from HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED)) at EnvDTE.ItemOperations.OpenFile(String FileName, String ViewKind) at System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) at System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) […]

错误:“指定的LINQexpression式包含对与不同上下文关联的查询的引用”

我收到来自LINQ查询标题中显示的错误,该查询包含来自两个不同edmx文件的两个表。 这是查询: var query = (from a in db1.Table1 join b in db1.Table2 on a.Id equals b.Id orderby a.Status where b.Id == 1 && a.Status == "new" select new { Id = a.Id, CompanyId = (from c in db2.Company where s.Id == a.Id select new { c.CompanyId }) }); db1和db2是与两个不同的edmx文件关联的上下文。 我怎样才能克服这个错误?

LINQ to Entities不支持LINQexpression式节点types“ArrayIndex”

public List<string> GetpathsById(List<long> id) { long[] aa = id.ToArray(); long x; List<string> paths = new List<string>(); for (int i = 0; i < id.Count; i++) { x = id[i]; Presentation press = context.Presentations.Where(m => m.PresId == aa[i]).FirstOrDefault(); paths.Add(press.FilePath); } return paths; } 在这个代码中我有一个exachtion: The LINQ expression node type 'ArrayIndex' is not supported in LINQ to […]

entity frameworkSaveChanges()与SaveChangesAsync()和Find()与FindAsync()

我一直在寻找2对以上的差异,但没有find任何文章解释清楚,以及何时使用这个或那个。 那么SaveChanges()和SaveChangesAsync()什么区别呢? 和Find()和FindAsync() ? 在服务器端,当我们使用Async方法时,我们也需要添加await 。 因此,我不认为它是服务器端的asynchronous。 这是否有助于防止客户端浏览器上的UI阻塞? 或者他们之间有什么优点和缺点?

entity frameworkCTP 4.“不能将NULL值插入列” – 即使没有NULL值

我使用EF CTP 4.我有一个简单的控制台应用程序(用于testing目的),是使用EF插入一些数据到SQL数据库。 插入物品后,我遇到了问题 using(var context = GetContext()) { BOB b = new BOB(); b.Id = 1; context.Bobs.Add(b); context.SaveChanges(); } 它会抛出错误: {“不能将NULL值插入到'Id'列,'TestDB.dbo.BOB'列;列不允许空值,INSERT失败。\ r \ n语句已经被终止。 该表只有1个字段的ID INT NOT NULL这是主键,而不是一个自动递增的ID。 在创buildDataContext的时候,我有这个configuration,这个configuration是被触发的。 protected override void OnModelCreating(ModelBuilder builder) { builder.Entity<BOB>().HasKey(b => b.Id); builder.Entity<BOB>().MapSingleType().ToTable("BOB"); } 我也预先填充了这个表,然后通过debugging器能够通过监视加载这个BOB对象…所以我真的难住,至于能够加载我的BOB表明,一切都是正确的…但是插入一个新的它崩溃…

无法为类库中的entity framework启用迁移

我刚接触EF 5,并使用他们的代码优先的迁移工具,但我似乎遇到错误,当我尝试启用迁移。 我在包pipe理器控制台中inputEnable-Migrations ,然后说 在当前项目中找不到从DbContext派生的类。 编辑生成的configuration类以指定启用迁移的上下文。 为项目MyApp.MvcUI启用了代码优先迁移。 然后在我的MvcUI项目中创build一个Migrations文件夹和一个Configuration类。 事情是,我的DbContext生活在一个名为MyApp.Domain的类库项目中。 它应该做这个项目中的所有内容,并且应该没有问题find我的DbContext。

使用EF迁移更新生产数据库可以吗?

根据这篇博客文章,大多数使用EF迁移的公司都没有用EF迁移来更新生产数据库的数据库模式。 相反,博客文章的作者build议使用架构更新脚本作为部署过程的一部分。 我已经使用了Schema更新脚本几年了,在他们工作的时候,我计划在未来使用EF迁移,原因如下: 更快的部署,更less的停机时间 更简单的部署过程 现有数据的迁移比使用T-SQL更容易 一个更易于理解的等待应用的变化语法(在传统环境中,使用干净的C#语法的DbMigration类与笨重的T-SQL迁移脚本)。 如果新软件版本的部署失败,那么旧的数据库模式有一个简单而快速的降级path 我能想到的一个原因是禁止使用EF来迁移生产数据库,如果数据库模式只是由DBA而不是开发人员所改变。 但是,我既是DBA又是开发人员,所以这对我来说并不重要。 那么,使用EF更新生产数据库有哪些风险呢? 编辑:我想补充说,正如solomon8718已经build议,我总是拉生产数据库的全新副本到我的登台服务器,并testingEF Migrations应用在登台服务器上,然后将其应用到生产服务器。 IMO对于生产系统的任何模式更新都是必不可less的,无论我是否使用EF迁移。

在EntityFramework.dll中发生未处理的“System.TypeInitializationException”typesexception

我正在尝试使用本教程学习entity framework和SQLite 。 但是,我得到一个错误。 抛出的错误是: 在EntityFramework.dll中发生未处理的“System.TypeInitializationException”typesexception 其他信息:“System.Data.Entity.Internal.AppConfig”的types初始值设定项引发exception。 这是完整的错误跟踪: System.TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. —> System.Configuration.Configuration ErrorsException: Configuration system failed to initialize —> System.Configuration.ConfigurationErrorsException: Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element. (C:\Users\Ankur\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.vshost.exe.config line 11) at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean […]