Tag: entity framework 6

entity framework – 无法加载指定的元数据资源

我意识到这已被问了很多次,但我似乎无法解决问题的根源。 我收到以下错误堆栈: 当我反映出我的dll时,我可以看到以下内容 阅读http://blogs.teamb.com/craigstuntz/2010/08/13/38628/它表明我希望在这里看到csdl,msl和ssdl文件,但它们不是。 它们确实存在于obj \ Debug \ edmxResourcesToEmbed中。 从来没有我试过通过这样做明确告诉web.config在哪里看: …connectionString=”metadata=res://DllName.dll/PaymentModel.csdl|res://DllName.dll/PaymentModel.ssdl|res://DllName.dll/PaymentModel.msl;provider=System.Data.SqlClient;provider … /> 这只是抛出一个错误,说它无法找到DLL: 无法解析程序集“DllName.dll”。 非常类似于这个未解决的SO问题无法解析程序集Model.dll 我尝试的最后一件事是将元数据行更改为: …connectionString=”metadata=res://*/;provider=System.Data.SqlClient;provider … /> 这引发了一条关于我不使用的sql ce的消息 – 有没有办法绕过这个? 还有什么我可以尝试的吗? 或者任何人都可以看到我哪里出错了? 一些额外的细节: 使用EF 6 EDMX设置为“嵌入式资源” 复制到输出目录:“不要复制” 元数据工件处理:“嵌入输出程序集” 最后在此 – 如果我将EDMX从Embedded Resource设置为EntityDeploy,那么这将在本地工作但不在构建服务器上构建,因为它会抛出与此SO问题完全相同的错误: 找不到要将其作为输入文件的资源嵌入的Conceptual Schema节点 但修复似乎没有帮助,遗憾的是我无法在服务器上安装.NET 4.5。

EF6 Mocking派生的DbSet

我正在尝试将新的模拟EF6应用到我现有的代码中。 我有一个扩展DbSet的类。 其中一个方法调用基类(BdSet)Create方法。 这是一个示例代码(不是完整的解决方案或真实姓名): public class DerivedDbSet : DbSet, IKeyValueDbSet, IOrderedQueryable where TEntity : class { public virtual bool Add(string value1, string value2) { var entity = Create(); // There is no direct implementation of the Create method it is calling the base method // Do something with the values this.Add(entity); return true; } } […]

MVC脚手架不支持Entity Framework 6或更高版本

刚刚升级到Entity Framework 6来看看。 我正在使用MVC4。 但是当我尝试从模型和上下文制作控制器时,我收到了这条消息。 MVC脚手架不支持Entity Framework 6或更高版本

指定密钥太长; 最大密钥长度为767字节Entity Framework 6中的Mysql错误

我已经开始使用visual studio 2012开发Asp.net Mvc-5应用程序了。所以我从nuget下载了Entity Framework-6和MySQL 6.8.3.0。 当我尝试使用db Context命令创建数据库时 dbContext.Database.CreateIfNotExists(); 抛出此exception。 指定密钥太长; 最大密钥长度为767字节 我已经对它进行了搜索,但找不到任何解决方案。 我在搜索过程中得到的一件事就是Unicode字符问题。 我不知道如何处理这个问题。 更新 我正在使用以下配置 我的数据库上下文类。 我已经删除了所有模型,只留下一个模型 public class MyContext : DbContext { public MyContext() : base(“myconn”) { this.Configuration.ValidateOnSaveEnabled = false; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove(); base.OnModelCreating(modelBuilder); } public DbSet ModelOne { get; set; } } 模特课 public class ModelOne […]

如何为Entity Framework CodeFirst迁移设置隔离级别

如果针对为SQL Server复制发布的表运行entity framework迁移(自动或显式),则会出现以下错误: 您只能在READ COMMITTED或REPEATABLE READ隔离级别中指定READPAST锁 之前( 此处 )存在一些问题,但它们完全无法解决根本原因: entity framework迁移在Serializable隔离级别运行 (如SQL Server分析器中清楚显示)。 对于结构更改事务,这是一个安全的选择,但它与发布的sql server表不兼容。 与dbContext.SaveChanges()事务中使用的默认READ COMMITED SNAPSHOT级别不同,我还没有找到一种方法来为代码中的迁移实际设置不同的隔离级别: 在Database.Initialize()期间似乎忽略了TransactionScope (设置事务隔离级别的经典方法Database.Initialize() 最近引入的Database.BeginTransaction(isolationLevel)实际上尝试在启动新事务之前初始化数据库,因此无法使用。 已知的解决方法 生成到SQL脚本的所有迁移。 这是有效的,但基于代码的迁移是一个我不想错过的强大工具。 使用显式迁移,并使用类似的方法启动每个Up()和Down()方法 Sql(“set transaction isolation level read committed”); 这很有效,但由于开发人员通常不使用复制数据库,因此不方便且容易出错。

将TransactionScope与entity framework6一起使用

我无法理解的是,是否可以对上下文进行更改并在提交之前在同一事务中获取更改。 这就是我要找的: using (var scope = new TransactionScope(TransactionScopeOption.Required)) { using (var context = new DbContext()) { //first I want to update an item in the context, not to the db Item thisItem = context.Items.First(); thisItem.Name = “Update name”; context.SaveChanges(); //Save change to this context //then I want to do a query on the updated item […]

EF中IDatabaseInitializer的正确用法是什么?

我有一个自定义DatabaseInitialiser,如下所示 /// /// Implements the IDatabaseInitializer to provide a custom database initialisation for the context. /// /// TContext is the DbContext public class ParikshaDataBaseInitializer : IDatabaseInitializer where TContext : DbContext { /// /// The method to Initialise the database. /// Takes care of the database cannot be dropped since it is in use problem while […]

MVC5:UserManager.AddToRole():“将用户添加到角色时出错:找不到UserId”?

我一直在尝试使用MVC5 / EF6并尝试使用Code-First Migrations进行新的身份validation。 解决方案中的所有内容当前正在构建,我可以添加Migration ,但是当我通过VS2013中的package manager console执行update-database ,我的Configuration.cs文件无法将我的测试数据完全处理到我的表中并输出Error Adding User to Role: UserId not found 。 我已经尝试显式设置用户ID并让它由Manager生成(如某些示例所示),但每次收到相同的错误消息。 我知道我的Configuration.cs文件的#region User & User Roles中的错误是失败的,但我不确定原因: using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using PersonalPortfolio2.Helper; using PersonalPortfolio2.Models; using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Diagnostics; using System.Linq; namespace PersonalPortfolio2.Models { public sealed class Configuration : DbMigrationsConfiguration { public Configuration() […]

从Entity Framework 6 Model中分离POCO Object类和DBContext

我开始使用Entity Framework 6.0.1版本。 我想将生成的DbContext和POCO模板类与模型中的不同类库分开。 我花了几个小时解决问题但没有成功。 如果我创建一个新的类库,添加EF 6 EntityObject Generator并填充以下模板变量: SourceCsdlPath = @”..\..\DataAccess\Model.edmx” , 构建后在错误列表中获取以下错误: 错误2运行转换:System.IO.FileNotFoundException:无法找到文件文件名:’C:\ Source \ EFsource \ POCO …. \ DataAccess \ SZOSZRDBModel.edmx’ 服务器堆栈跟踪:位于System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Object []和outArgs)的Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(String path)在System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg) 在[0]处重新抛出exception:位于Microsoft.VisualStudio的System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)的System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)。 TextTemplating.ITextTemplatingEngineHost.ResolvePath在Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.ApplyUserSettings(userSettings userSettings)(字符串路径)在Microsoft.VisualStudio.TextTemplating31479401930D2C4820ACF71C66B5389A24A5053726798D9718DB676B3FFA30A3454B3CB1EDE2E1C267D5278B1528860C072E81A0E4647BC23993669604048FCD.GeneratedTextTransformation.TransformText() 错误消息是明确的,但我不知道,如何设置模型路径没有完整的绝对路径。 我不确定,使用最新版本的entity framework是最好的主意……

LINQ条件Where子句不起作用

使用:MVC 5,C#,VS 2013,EF6和CodeFirst,SQL Server 2012 我已经尝试了四种不同的方式来获取数据而没有任何问题。 IQueryable qryResults = _db.vw_Results; 我遇到的问题是我有13个filter选项,所有13个的代码遵循相同的逻辑: string fmVal = string.Empty; if (!string.IsNullOrEmpty(form[“Locations”])) { fmVal = form[“Locations”].ToString(); qryResults = qryResults.Where(w => w.LOCATION.CompareTo(fmVal) == 0); } if (!string.IsNullOrEmpty(form[“ddActionLevels”])) { //qryResults = qryResults.Where(w => w.PAL_ID==form[“ddActionLevels”].ToString()); vbVal = form[“ddActionLevels”].ToString(); ; //qryResults = qryResults.Where(w => w.AL == vbVal); qryResults.Where(w => w.AL.CompareTo(vbVal) >= 0); } if […]